我正在努力解决以下问题。我有一个数据框,其浓度值可能低于检测限(在此示例中<100或<200)
df2 = DataFrame({"site":['site1','site2','site3','site4'],
"concentration":[12000,2000,'<100','<200']})
为了绘制值,我想将值<100替换为0.5 x检测限。所以<100变为50; <200变成了。然后,代码应添加列TPH <以指示哪些站点低于检测限。
任何帮助深表感谢
使用<
创建一个掩码来查找元素,使用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')