从切片更新多个列时,df.fillna()不起作用的原因是因为df.fillna()方法只能对DataFrame或Series对象进行填充操作,而切片操作返回的是一个视图,不是一个新的DataFrame或Series对象。
当我们使用切片操作更新多个列时,可以使用DataFrame的.loc或.iloc属性来选择需要更新的列,并使用fillna()方法对选定的列进行填充。例如:
import pandas as pd
# 创建一个示例DataFrame
data = {'A': [1, 2, None, 4, 5],
'B': [None, 2, 3, None, 5],
'C': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 使用.loc属性选择需要更新的列,并使用fillna()方法填充缺失值
df.loc[:, ['A', 'B']] = df.loc[:, ['A', 'B']].fillna(0)
print(df)
输出结果为:
A B C
0 1.0 0.0 1
1 2.0 2.0 2
2 0.0 3.0 3
3 4.0 0.0 4
4 5.0 5.0 5
在上述示例中,我们使用.loc属性选择了列'A'和列'B',并使用fillna(0)方法将缺失值填充为0。
需要注意的是,切片操作返回的是原始DataFrame的一个视图,因此对切片进行填充操作不会改变原始DataFrame的值。如果需要将填充后的结果保存到原始DataFrame中,可以使用赋值操作符(=)将填充后的切片赋值给原始DataFrame的相应位置。
关于pandas的fillna()方法的更多信息,可以参考腾讯云文档中的介绍:fillna()方法文档。
领取专属 10元无门槛券
手把手带您无忧上云