繁体   English   中英

根据其左侧单元格的值在 Pandas DataFrame 中填充 NaN 值

[英]Fill NaN values in a pandas DataFrame depending on values of cells to its left

我试图用零填充一个非常大的 Pandas 数据框中的 NaN,但前提是在同一行中但在其左侧的单元格中有非 NaN 值。 例如,从这个输入数据帧,

input = pd.DataFrame([[1, np.NaN, 1.5, np.NaN], [np.NaN, 2, np.NaN, np.NaN]], index=['A', 'B'], columns=['col1', 'col2', 'col3', 'col4'])

看起来像:

    col1    col2    col3    col4
A   1.0     NaN     1.5     NaN
B   NaN     2.0     NaN     NaN

预期输出将是:

    col1    col2    col3    col4
A   1.0     0       1.5     0
B   NaN     2.0     0       0

看看 [B, col1] 如何保持一个 Nan 因为它的左边没有非 NaN 值,但是所有四个 [A,col2], [A, col4], [B,col3] 和 [B, col4] 都被填充了带零(因为有更左的非 NaN 值)。

有没有人知道如何继续这个? 非常感谢!

使用前向填充缺失值并通过测试缺失值和此掩码分配0测试不缺失和链:

df[df.ffill(axis=1).notna() & df.isna()] = 0
print (df)
   col1  col2  col3  col4
A   1.0   0.0   1.5   0.0
B   NaN   2.0   0.0   0.0

或者您可以使用累积总和测试不等于0值:

df[df.fillna(0).cumsum(axis=1).ne(0) & df.isna()] = 0
print (df)
   col1  col2  col3  col4
A   1.0   0.0   1.5   0.0
B   NaN   2.0   0.0   0.0

暂无
暂无

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

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