TransWikia.com

Как применить apply() на N столбцов для конкатинации в строку?

Stack Overflow на русском Asked on December 20, 2020

Есть DataFrame вида:

     c1    c2    c3    ...    cN
0    1     1     0     ...    0
1    0     1     1     ...    0
2    0     0     1     ...    0
3    1     1     0     ...    1

Необходимо получить новый столбец, который являлся бы строкой вида c1+c2+c3...+cN.

Я делаю

df.loc[:, 'c1':'cN'].apply(lambda x: ???, axis=1)

Но не понимаю, как написать лямбду в этом случае.

One Answer

попробуйте так:

In [102]: df
Out[102]:
   c1  c2  c3  c4
0   1   1   0   0
1   0   1   1   0
2   0   0   1   0
3   1   1   0   1

In [103]: res = df.loc[:, "c1":"c4"].astype(str).T.apply(lambda x: x.str.cat())

In [104]: res
Out[104]:
0    1100
1    0110
2    0010
3    1101
dtype: object

или так (по совету @strawdog):

res = df.loc[:, "c1":"c4"].astype("str").apply(lambda x: x.str.cat(), axis=1)

Correct answer by MaxU on December 20, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP