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

时间:2017-04-03 14:33:45

标签: python-3.x pandas dataframe

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

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

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

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

3 个答案:

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