如何在pandas.DataFrame中将小数点“.”替换为逗号“,”
原代码不生效的原因
- 若
Column 5列为数值类型(float/int),默认的replace方法是对整个值做精确匹配,你传入的字符串"."和数值完全不匹配,因此不会做任何修改。 - 链式索引
all_data_df['Column 5'][1:10]的写法容易触发pandas的副本机制,赋值操作只会修改临时生成的副本,不会写入原DataFrame。
修复方法
如果你的需求是把指定行的数值转换为以逗号为小数分隔符的字符串,可使用以下代码:
# 注意.loc的切片是左右闭区间,如果你要修改行号1到9的内容(对应原代码[1:10]的切片范围) all_data_df.loc[1:9, 'Column 5'] = all_data_df.loc[1:9, 'Column 5'].astype(str).str.replace('.', ',', regex=False)
如果你的行索引不是默认的连续整数,需要按位置取第2到第10行,改用iloc写法:
col_idx = all_data_df.columns.get_loc('Column 5') all_data_df.iloc[1:10, col_idx] = all_data_df.iloc[1:10, col_idx].astype(str).str.replace('.', ',', regex=False)
补充:如果你只是需要导出文件时使用逗号作为小数分隔符,不需要修改原DataFrame数据,直接在导出时加参数即可:
all_data_df.to_csv('导出文件路径.csv', decimal=',')
内容的提问来源于stack exchange,提问作者redokum
相关产品推荐
相关产品推荐

