Pandas.DataFrame.str.replace函数将浮点数替换为NaN

Vla*_*lad 3 dataframe python-3.x pandas

我有一个Pandas DataFrame,假设: df = pd.DataFrame({'Column name':['0,5',600,700]})

我需要删除,.代码是: df_mod = df.stack().str.replace(',','').unstack()

结果我得到: [05, NaN, NaN]

你有什么想法为什么我的表达式用NaN替换数字以及如何避免它?非常感谢!

Psi*_*dom 10

这些数字被视为数值,没有str.replace方法,您可以将列转换为字符串,删除逗号,然后将数据类型转换回来:

df['Column name'].astype(str).str.replace(",", "").astype(int)

#0      5
#1    600
#2    700
#Name: Column name, dtype: int64
Run Code Online (Sandbox Code Playgroud)


Yei*_*ile 5

我有一个替代答案,只是为了好玩:

df.applymap(lambda x: x.replace(',','') if type(x) is str else x)
Run Code Online (Sandbox Code Playgroud)

这将检查 str 类型的每个值,然后检查任何 str 的 .replace 。


piR*_*red 5

正如@Psidom 所确定的那样,您会得到,NaN因为ints 没有replace方法。您可以按原样运行它并Nan使用原始列填充这些值

c = 'Column name'
df[c].str.replace(',', '').fillna(df[c])

0     05
1    600
2    700
Name: Column name, dtype: object
Run Code Online (Sandbox Code Playgroud)

这保留了所有 dtypes