如何仅对DataFrame指定索引列的行进行格式设置?
解决方法
报错原因
你碰到的AttributeError: 'DataFrame' object has no attribute 'map'是因为map()是Pandas单列(Series)的专属方法,而df.iloc[:, 1:]返回的是多列的DataFrame,自然没有这个属性。
正确实现方式
要通过列索引选择目标列并格式化0位小数,同时保留原DataFrame其他列的格式,可以按以下步骤操作:
1. 格式化为字符串类型(保留0位小数格式)
先复制原DataFrame避免修改原数据,再用applymap()对目标列的每个元素做格式化(applymap()是DataFrame的元素级操作方法):
import pandas as pd df = pd.DataFrame({'A': ['foo', 'bar'], 'B': [134.532, 543.009], 'C': [1.98, 0.9], 'D': [300.99, 7000.89] }) # 复制原数据 new_df = df.copy() # 通过列索引选择第1、2列(对应B、C),格式化0位小数 new_df.iloc[:, 1:3] = new_df.iloc[:, 1:3].applymap('{:,.0f}'.format) print(new_df)
输出结果:
A B C D 0 foo 135 2 300.99 1 bar 543 1 7000.89
2. 保留数值类型(四舍五入到0位小数)
如果不需要转成字符串,只是数值上保留0位小数,用round()更直接:
new_df = df.copy() new_df.iloc[:, 1:3] = new_df.iloc[:, 1:3].round(0) print(new_df)
输出结果:
A B C D 0 foo 135.0 2.0 300.99 1 bar 543.0 1.0 7000.89
内容的提问来源于stack exchange,提问作者Luiz Scheuer
相关产品推荐
相关产品推荐

