如何对Pandas DataFrame的首行所有数值执行四舍五入操作
你之前的代码出错,是因为df.iloc[0]返回的是索引为原DataFrame列标签的Series,df.update()默认按索引对齐匹配,会将该Series的索引和原DataFrame的行索引对应,所以才会出现替换第一列而非首行的问题。
解决方案
方案1:直接赋值(最简便)
直接对首行位置赋值四舍五入后的结果即可,适配你无表头的DataFrame结构:
df.iloc[0] = df.iloc[0].round()
如果需要保留原数据不被修改,可以先拷贝再操作:
new_df = df.copy() new_df.iloc[0] = new_df.iloc[0].round()
方案2:适配update方法的写法
如果你需要沿用update方法实现,需要把提取的首行Series转置为单行DataFrame,保证索引对齐逻辑正确:
new = df.iloc[0].round().to_frame().T df.update(new)
内容的提问来源于stack exchange,提问作者user14875201
相关产品推荐
相关产品推荐

