concat列值直到第二个最后一个有效事务(非零或不为null)

2024-04-29 18:56:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将事务连接到它的最后一个有效事务。 假设我在第4个事务之前有列,我想生成一个序列,如下面的输出。
注意:trans列中的值是分类的。你知道吗

输入数据

| Cust_id    | trans_1 | trans_2 | trans_3 | trans_4 |
|------------|---------|---------|---------|---------|
| 1000026037 | 'a'     | 'b'     | 'd'     |  NaN    | 
| 1000026048 | 'm'     | 'c'     |  NaN    |  NaN    |
| 1000026081 | 'x'     | 't'     | 'y'     |  NaN    |
| 1000026451 | 'r'     | 'p'     |  NaN    | 'u'     |

所需输出


Tags: 数据idtrans分类序列nan事务cust
1条回答
网友
1楼 · 发布于 2024-04-29 18:56:00

选择事务列并获取数据,直到最后一个非零并连接。你知道吗

df.filter(regex='trans_')
  .apply(lambda x: x.iloc[x.nonzero()].iloc[:-1], axis=1)
  .add(' ')
  .sum(axis=1)
  .str.strip()

或者

df.filter(regex='trans_')
  .apply(lambda x: ' '.join(x.iloc[x.nonzero()].iloc[:-1]), axis=1)

注意

确保所有零都是整数零,而不是字符串零,即0'0'

df = df.replace({'0': 0})

相关问题 更多 >