我正在努力解决以下问题。我有一个数据框,其浓度值可能低于检测限(在本例中<100或<200)
df2 = DataFrame({"site":['site1','site2','site3','site4'],
"concentration":[12000,2000,'<100','<200']})
为了绘制值,我想用0.5 x检测限值替换值<100。所以&lt; 100变成50; &lt; 200变成了。 然后代码应该添加一列TPH&lt;指出哪些站点低于检测限。
非常感谢任何帮助
答案 0 :(得分:2)
创建一个掩码,以查找包含<
,索引为loc
和更新 -
m = df2.concentration.astype(str).str.contains('<')
df2.loc[m, 'concentration'] = \
pd.to_numeric(df2.loc[m, 'concentration'].str.lstrip('<'), errors='coerce') / 2
df2
concentration site
0 12000 site1
1 2000 site2
2 50 site3
3 100 site4
此外,m
记录检测限以下的行。
m
0 False
1 False
2 True
3 True
Name: concentration, dtype: bool
将其分配给df2
-
df2['TPH<'] = m
df2
concentration site TPH<
0 12000 site1 False
1 2000 site2 False
2 50 site3 True
3 100 site4 True
请记住concentration
是一个对象列。我建议转换为数字 -
df2.concentration = df2.astype(float)
或者,
df2.concentration = pd.to_numeric(df2.concentration, errors='coerce')