4 回答

TA贡献1876条经验 获得超7个赞
一种方法。不确定这是一个多好的解决方案:
df['Total_dl'] = df['Total_dl'].apply(lambda o: o if '<' in str(o) else np.nan)
使用执行相同操作的函数:
>>> df
SampleID Total_dl
0 A-1-0' 2.5
1 A-1-0.5' <0.021
>>> df.dtypes
SampleID object
Total_dl object
dtype: object
>>> def foo(o):
... if '<' in str(o):
... return o
... else:
... return np.nan
...
>>> df['Total_dl'] = df['Total_dl'].apply(foo)
>>> df
SampleID Total_dl
0 A-1-0' NaN
1 A-1-0.5' <0.021
>>>

TA贡献1829条经验 获得超6个赞
以下操作应该可以解决问题:
import numpy as np
mask = df.Total_dll < 1.
df.loc[mask, 'Total_dll'] = np.nan
如果类型为 ,您可以尝试以下操作:Total_dllstring
import numpy as np
df.str.startswith('<')
df.loc[df.Total_dll.str.startswith('<'), np.nan]

TA贡献1818条经验 获得超8个赞
假设你的数据框被调用,那么这将做这个技巧df
import numpy as np
nan_condition = df[~df["Total_dl"].str.contains(">")]
df.loc[nan_condition,"Total_dl"] = np.nan
添加回答
举报