[英]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.