Панды объединяют несколько столбцов (с NoneType) - PullRequest
0 голосов
/ 11 сентября 2018

Мои извинения, если раньше об этом спрашивали / отвечали, но я не смог найти ответ на свою проблему после некоторого времени поиска.

Проще говоря, я хотел бы объединить несколько столбцов в один са, проблема в том, что некоторые ячейки пусты (NoneType)

и при их объединении я получаю либо:

  1. TypeError: ('элемент последовательности 3: ожидаемый экземпляр str, найден NoneType',' произошло с индексом 0 ')

или

При добавлении .map (str) буквально добавляется «None» для каждого значения NoneType (как и ожидалось)

Допустим, у меня есть рабочий фрейм данных, похожий на

     0        1        2
1   Rice
2   Beans    Rice
3   Milk     Beans   Rice
4   Sugar    Rice

То, что я хотел бы, это один столбец со значениями

    Production
1   Rice
2   Beans, Rice
3   Milk, Beans, Rice
4   Sugar, Rice

С некоторыми поисками и настройками я добавил этот код:

testColumn = productionFrame.iloc[::].apply(lambda x: ', '.join(x)), axis=1)

, который вызывает проблему 1

или изменил это так:

testColumn = productionFrame.iloc[::].apply(lambda x: ', '.join(x.map(str)), axis=1)

Из-за чего возникает проблема 2

Может быть, хорошо добавить, что я очень новичок и сейчас немного изучаю Pandas / Python.Так что любая помощь или толчок в правильном направлении очень ценится!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы можете использовать str.join после преобразования NaN значений в пустые строки:

res = df.fillna('').apply(lambda x: ', '.join(filter(None, x)), axis=1)

print(res)

0                 Rice
1          Beans, Rice
2    Milk, Beans, Rice
3          Sugar, Rice
dtype: object
0 голосов
/ 11 сентября 2018

pd.Series.str.cat здесь должно работать

df
Out[43]: 
       0      1     2
1   Rice    NaN   NaN
2  Beans   Rice   NaN
3   Milk  Beans  Rice
4  Sugar   Rice   NaN

df.apply(lambda x: x.str.cat(sep=', '), axis=1)
Out[44]: 
1                 Rice
2          Beans, Rice
3    Milk, Beans, Rice
4          Sugar, Rice
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...