繁体   English   中英

逐行用列值替换 NaN

[英]Replace NaN with column value on a row by row basis

在我的 Pandas DataFrame 中,我想用列“E”中的相应值逐行替换 NaN (np.nan) 的所有实例。

这个DataFrame在这里..

一种 C
1个 钠盐 3个 钠盐 88
钠盐 5个 钠盐 4个 55

应该导致..

一种 C
1个 88 3个 88 88
55 5个 55 4个 55

我找不到任何代码来解决这个问题。

数据:

{'A': [1, nan],
 'B': [nan, 5],
 'C': [3, nan],
 'D': [nan, 4],
 'E': [88, 55]}

让我们试试mask

df = df.mask(df.isna(),df['E'],axis=0)
Out[423]: 
      A     B     C     D   E
0   1.0  88.0   3.0  88.0  88
1  55.0   5.0  55.0   4.0  55

你可以转置 + fillna + 转回:

df = df.T.fillna(df['E']).T.astype(int)

Output:

    A   B   C   D   E
0   1  88   3  88  88
1  55   5  55   4  55

这也适用:

df = df.apply(lambda x: x.fillna(x['E']), axis=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM