Панды добавляют столбцы только со значениями - PullRequest
0 голосов
/ 02 мая 2018

У меня есть df с несколькими столбцами, а иногда столбец нулевой. Я хотел бы объединить столбцы, которые ТОЛЬКО заполнены. Прямо сейчас я просто добавляю все столбцы и у меня много пустых мест.

Num    Country   City
1        USA      
2               Philly

Так что я хотел бы 4-й столбец, который

Num    Country   City  Total
1        USA             1,USA
2               Philly   2,Philly 

Но это то, что я получаю

Num    Country   City  Total
1        USA             1,USA, 
2               Philly   2, ,Philly 

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Вы также можете использовать понимание списка. Это должно быть быстро и читабельно:

df['total'] = [', '.join([j for j in i.astype(str) if j != '']) for i in df.values]

Вот полный пример:

import pandas as pd

data = '''\
Num,Country,City
1,USA,
2,,Philly
'''

df = pd.read_csv(pd.compat.StringIO(data)).fillna('')

cols = ['Num','Country','City']

df['total'] = [', '.join([j for j in i.astype(str) if j != '']) for i in df[cols].values]
0 голосов
/ 02 мая 2018

Вот альтернативное решение, похожее по методологии на @AntonvBR, но немного отличающееся по механике:

df['total'] = [', '.join(list(filter(None, i))) for i in df.values.astype(str)]

   Num Country    City      total
0    1     USA             1, USA
1    2          Philly  2, Philly
0 голосов
/ 02 мая 2018

Вы можете отфильтровать нули.

df.apply(lambda row: ", ".join(row[i] for i in df.columns if ~pd.isnull(row[i])]),
         axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...