Pandas 如何使用“应用于多个数据集列”?

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'

我几乎不想用从上一个列表中选择的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', '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