python - 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)
解决方案
您可以忽略 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