значения столбца concat до второй последней действительной транзакции (не ноль или не ноль) - PullRequest
1 голос
/ 20 сентября 2019

Я хочу соединить транзакции с второй последней действительной транзакцией .Предположим, у меня есть столбцы до 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'     |

Желаемый выход : | Sequence | |----------| | 'a b' | | 'm' | | 'x t' | | 'r p' |

1 Ответ

2 голосов
/ 20 сентября 2019

Выберите столбцы транзакции и получите данные до второго последнего ненулевого значения и объедините.

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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...