Pandas 如何使用“应用于多个数据集列”?
我几乎不想用从上一个列表中选择的NaN值填充某些列。代码将转到else路径,并且从未进行正确的修改Pandas 如何使用“应用于多个数据集列”?,pandas,apply,multiple-columns,Pandas,Apply,Multiple Columns,我几乎不想用从上一个列表中选择的NaN值填充某些列。代码将转到else路径,并且从未进行正确的修改 df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': [0.0, np.nan, np.nan, 100], 'C': [20, 0.0002, 10000, np.nan], 'D': ['D0', 'D1', 'D2'
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': [0.0, np.nan, np.nan, 100],
'C': [20, 0.0002, 10000, np.nan],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
num_cols = ['B', 'C']
fill_mean = lambda col: col.fillna(col.mean()) if col.name in num_cols else col
df2.apply(fill_mean, axis=1)
您可以使用
df1.fillna(df1.mean())
这将通过列平均值填充数字列的nas:
A B C D
0 A0 0.0 20.000000 D0
1 A1 50.0 0.000200 D1
2 A2 50.0 10000.000000 D2
3 A3 100.0 3340.000067 D3
我不确定您想要的输出是否只是所有列(单行)的平均值。如果是这样,下面的解决方案可能会有所帮助
df = df1.select_dtypes(include='float').mean().to_frame().T
df = pd.concat([df, df.reindex(columns = df1.select_dtypes(exclude='float').columns)], axis=1, sort=False)
print(df)
B C A D
0 50.0 3340.000067 NaN NaN
可能重复?是否可以添加预期输出?df1.fillna(df1.mean())将根据该列的平均值在列中填充NA,因此此处不需要LC