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)
我有一个替代答案,只是为了好玩:
df.applymap(lambda x: x.replace(',','') if type(x) is str else x)
Run Code Online (Sandbox Code Playgroud)
这将检查 str 类型的每个值,然后检查任何 str 的 .replace 。
正如@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
| 归档时间: |
|
| 查看次数: |
3638 次 |
| 最近记录: |