如何仅从列中的字符串中删除数字

2024-04-28 21:07:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名环境地质学家,我正在学习Python/熊猫。我在Pandas中有一个分析数据的dataframe,类似于下面的示例:

starting dataframe

我只想从总数中删除保留检测限的数字(带<;的数字)。这将是我要寻找的最后一个数据帧:

final dataframe I'm looking for

由于该列是字符串,我不确定如何解析该列。任何帮助都将不胜感激

谢谢


Tags: 数据字符串lt示例dataframepandas环境数字
3条回答

假设您的数据帧被称为df,那么这样就可以了

import numpy as np
nan_condition = df[~df["Total_dl"].str.contains(">")]
df.loc[nan_condition,"Total_dl"] = np.nan

一种方法。不确定这是一个多么好的解决方案:

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
>>> 

下面应该可以做到这一点:

import numpy as np


mask = df.Total_dll < 1.
df.loc[mask, 'Total_dll'] = np.nan

如果Total_dll属于string类型,您可以尝试以下操作:

import numpy as np


df.str.startswith('<')
df.loc[df.Total_dll.str.startswith('<'), np.nan]

相关问题 更多 >