我在为下面的事情而挣扎。我有一个具有浓度值的数据,它可以低于检测极限(在本例中<100或<200)
df2 = DataFrame({"site":['site1','site2','site3','site4'],
"concentration":[12000,2000,'<100','<200']})为了绘制这些值,我想将<100的值替换为检测极限的0.5倍。所以<100变成50;<200变成。然后,代码应该添加一个列TPH<,以指示哪些站点低于检测极限。
任何帮助都非常感谢。
发布于 2017-12-19 16:04:06
创建一个掩码,用<查找元素,用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')https://stackoverflow.com/questions/47890756
复制相似问题