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

时间:2020-02-29 23:11:38

标签: python string pandas dataframe

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

starting dataframe

我只想从Total_dl中删除保留检测限的数字(带有<的数字)。这将是我正在寻找的最终数据框:

final dataframe I'm looking for

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

谢谢

4 个答案:

答案 0 :(得分:0)

以下应该可以解决问题:

    #Write out the file
    try:
        display('Writing {0} '.format(filename))
        df_full.to_json('{0}{1}'.format(output_path,filename),orient='records',lines=True )
    except Exception as e :
        logging.error("Error could not write file", exc_info=True)
        print("Error could not write file")

如果import numpy as np mask = df.Total_dll < 1. df.loc[mask, 'Total_dll'] = np.nan 的类型为Total_dll,则可以尝试以下操作:

string

答案 1 :(得分:0)

一种方法。不确定解决方案有多好:

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

答案 2 :(得分:0)

假设您的数据帧称为df,那么就可以解决问题

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

答案 3 :(得分:-1)

您可以使用此


data = data.loc[data[column] > x]