繁体   English   中英

如何在 Pandas Data Frame 行中找到最后一个索引并使用列信息向后计数?

[英]How to find last index in Pandas Data Frame row and count backwards using column information?

例如:

如果我有这样的数据框:

      20  40  60  80  100  120  140
 1    1   1   1  NaN  NaN  NaN  NaN
 2    1   1   1   1    1   NaN  NaN
 3    1   1   1   1   NaN  NaN  NaN
 4    1   1  NaN NaN   1    1    1

如何找到每行中的最后一个索引,然后计算经过的列的差异,以便得到这样的结果?

      20  40  60  80  100  120  140
 1    40  20   0  NaN  NaN  NaN  NaN
 2    80  60  40  20    0   NaN  NaN
 3    60  40  20  0    NaN  NaN  NaN
 4    20  0   NaN NaN   40  20   0

您可以尝试转置数据帧,然后仅计数非空值并最后设置 1

#bit of complex procedure, solution involving with.
def fill_values(df):
    df = df[::-1]
    a = df == 1
    b = a.cumsum()
    #Function in counting the cummulative not null values
    arr = np.where(a, b-b.mask(a).ffill().fillna(0).astype(int), 1)
    return (b-b.mask(a).ffill().fillna(0).astype(int))[::-1]*20
df.apply(fill_values,1).replace(0,np.nan)-20

出去:

    20      40      60    80    100     120 140
1   40.0    20.0    0.0   NaN   NaN     NaN NaN
2   80.0    60.0    40.0  20.0  0.0     NaN NaN
3   60.0    40.0    20.0  0.0   NaN     NaN NaN
4   20.0    0.0     NaN   NaN   40.0    20.0    0.0

暂无
暂无

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

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