我有一个Pandas DataFrame,假设:
df = pd.DataFrame({'Column name':['0,5',600,700]})
我需要删除,
。代码是:
df_mod = df.stack().str.replace(',','').unstack()
结果我得到:[05, NaN, NaN]
你有什么想法为什么我的表达式用NaN替换数字以及如何避免它?非常感谢!
答案 0 :(得分:9)
这些数字被视为数值,没有str.replace
方法,您可以将列转换为字符串,删除逗号,然后将数据类型转换回来:
df['Column name'].astype(str).str.replace(",", "").astype(int)
#0 5
#1 600
#2 700
#Name: Column name, dtype: int64
答案 1 :(得分:1)
我有另一个答案,只是为了好玩:
df.applymap(lambda x: x.replace(',','') if type(x) is str else x)
这将检查str类型的每个值,然后检查.replace是否为任何str。
答案 2 :(得分:1)
由@Psidom确定,您获得NaN
,因为int
没有replace
方法。您可以按原样运行它,并使用原始列
Nan
值
c = 'Column name'
df[c].str.replace(',', '').fillna(df[c])
0 05
1 600
2 700
Name: Column name, dtype: object
这会保留所有dtypes