【问题标题】:Get name of the column with last value in the row获取行中最后一个值的列的名称
【发布时间】:2022-12-03 22:03:47
【问题描述】:

我正在做队列分析,我使用的数据集有 15 个月的名称作为收入列和大约 7k user_id 行。 我需要获取一个包含用户上次活跃月份的新列。

2021-01-01 2021-02-01
3456. Nan
Nan. 8679

结果应该是这样的

2021-01-01 2021-02-01 Last_month
3456. Nan 2021-01-01
Nan. 8679 2021-02-01

我尝试了几个选项,但没有用

users.apply(pd.Series.last_valid_index)

【问题讨论】:

    标签: pandas


    【解决方案1】:

    您可以将 pandas.DataFrame.columnspandas.DataFram.isna 一起使用:

    users["Last_Month"] = pd.Series(df.columns[df.isna().any()].tolist())
    

    # 输出 :

    print(users)
    
      2021-01-01 2021-02-01  Last_Month
    0       3456       None  2021-01-01
    1       None       8679  2021-02-01
    

    【讨论】:

      【解决方案2】:

      使用布尔值和 idxmax() 可能是这里的解决方案

      df['last_month'] = (~df.isna()).idxmax(axis=1)
      
      
      print(df)
      
      
        2021-01-01 2021-02-01  last_month
      0       3456        NaN  2021-01-01
      1        NaN       8679  2021-02-01
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-10
        • 2014-01-04
        • 1970-01-01
        • 2021-07-18
        • 2019-03-09
        • 2020-03-05
        相关资源
        最近更新 更多