【问题标题】:How to find last index in Pandas Data Frame row and count backwards using column information?如何在 Pandas Data Frame 行中查找最后一个索引并使用列信息倒数?
【发布时间】:2019-01-19 14:09:48
【问题描述】:

例如:

如果我有这样的数据框:

      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

【问题讨论】:

    标签: python pandas python-2.7


    【解决方案1】:

    您可以尝试转置数据帧,然后只计算非空值和最后设置 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
    

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2010-11-06
    • 2021-11-09
    相关资源
    最近更新 更多