首页 > 解决方案 > Pandas-Lambda 用于同一列中的不同对象

问题描述

对于此数据框:

import pandas as pd
df=pd.DataFrame([[2],['do-g'],['ra-t'],['ca-t'],[5]], columns=['A'])
print(df)

列“A”中的值被视为“int”值。如何添加一个从单词中删除“-”但保留数字/整数的新列(源自“A”列)?

我尝试的解决方案:

df['new_column']=df.A.apply(lambda x: x.replace('-') if x.isnull() else x)

标签: pythonobjectlambdaisnull

解决方案


您可以忽略 lambda 中的非字符串值。

>>> df['new_column'] = df.A.apply(lambda x: x.replace('-', '') if isinstance(x,str) else x)
>>> df
      A new_column
0     2          2
1  do-g        dog
2  ra-t        rat
3  ca-t        cat
4     5          5

推荐阅读