创建一个新列以显示 Pandas 中最后一次支出的月份

Create a new columns to show the month of last spend in Pandas

我正在处理支出数据,我想在其中查看当年和上一年支出的最后一个月。如果这几年没有支出,那么,我假设支出的最后一个月是 2020 年 12 月。

我的数据是这样的

如数据所示,月份已经以列的形式存在。 我想创建一个新列 last_txn_month,它给出了上个月的支出时间。所以输出应该是这样的:

假设您的 DataFrame 看起来像:

df = pd.DataFrame([[1, np.nan, np.nan, 3, np.nan], [10, 11, 12, 13, 14],
                   [101, 102, np.nan, np.nan, np.nan], 
                   [110, np.nan, np.nan, 111, np.nan]], 
                  columns=[*'abcde'])

然后你可以使用notna来创建boolean DataFrame;然后 apply 一个 lambda 函数,过滤每行的 non-NaN 值的最后一列名称:

df['last'] = df.notna().apply(lambda x: df.columns[x][-1], axis=1)

输出:

     a      b     c      d     e last
0    1    NaN   NaN    3.0   NaN    d
1   10   11.0  12.0   13.0  14.0    e
2  101  102.0   NaN    NaN   NaN    b
3  110    NaN   NaN  111.0   NaN    d