用列的值替换 DataFrame 中的空值

假设我有以下熊猫数据框:


df = pd.DataFrame([[3, 2, np.nan, 0],

                    [5, 4, 2, np.nan],

                    [7, np.nan, np.nan, 5],

                    [9, 3, np.nan, 4]],

                    columns=list('ABCD'))

返回这个:


   A    B    C    D

0  3  2.0  NaN  0.0

1  5  4.0  2.0  NaN

2  7  NaN  NaN  5.0

3  9  3.0  NaN  4.0

如果找到 np.nan,我希望该值被 A 列中的值替换。所以这意味着结果是这样的:


   A    B    C    D

0  3  2.0  3.0  0.0

1  5  4.0  2.0  5.0

2  7  7.0  7.0  5.0

3  9  3.0  9.0  4.0

我已经尝试了多种方法,但我什么都做不了。任何人都可以帮忙吗?


慕标5832272
浏览 440回答 3
3回答

慕村225694

这是必要的双转置:cols = ['B','C', 'D']df[cols] = df[cols].T.fillna(df['A']).Tprint(df)   A    B    C    D0  3  2.0  3.0  0.01  5  4.0  2.0  5.02  7  7.0  7.0  5.03  9  3.0  9.0  4.0因为:df[cols] = df[cols].fillna(df['A'], axis=1)print(df)NotImplementedError:目前只能逐列填充字典/系列带有numpy.where和广播列的另一种解决方案A:df = pd.DataFrame(np.where(df.isnull(), df['A'].values[:, None], df),                   index=df.index,                   columns=df.columns)print (df)     A    B    C    D0  3.0  2.0  3.0  0.01  5.0  4.0  2.0  5.02  7.0  7.0  7.0  5.03  9.0  3.0  9.0  4.0谢谢@pir 提供另一种解决方案:df = pd.DataFrame(np.where(df.isnull(), df[['A']], df),                   index=df.index,                   columns=df.columns)

蛊毒传说

目前,fillna不允许在对齐索引时跨列广播系列。pandas.DataFrame.mask这与我们想要fillna做的完全一样。找到空值,填充它与df.A沿axis=0df.mask(df.isna(), df.A, axis=0)   A    B    C    D0  3  2.0  3.0  0.01  5  4.0  2.0  5.02  7  7.0  7.0  5.03  9  3.0  9.0  4.0pandas.DataFrame.fillna 使用字典但是,您可以将字典传递fillna给它,告诉它对每一列做什么。df.fillna({k: df.A for k in df})   A    B    C    D0  3  2.0  3.0  0.01  5  4.0  2.0  5.02  7  7.0  7.0  5.03  9  3.0  9.0  4.0

翻翻过去那场雪

DOfillna用reindexdf.fillna(df[['A']].reindex(columns=df.columns).ffill(1))Out[20]:    A    B    C    D0  3  2.0  3.0  0.01  5  4.0  2.0  5.02  7  7.0  7.0  5.03  9  3.0  9.0  4.0要么 combine_firstdf.combine_first(df.fillna(0).add(df.A,0))Out[35]:    A    B    C    D0  3  2.0  3.0  0.01  5  4.0  2.0  5.02  7  7.0  7.0  5.03  9  3.0  9.0  4.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python