Объединение нескольких столбцов одного и того же кадра данных в python - PullRequest
1 голос
/ 01 апреля 2020

Я хочу объединить несколько столбцов одного и того же кадра данных в один столбец. В столбцах, на которых нет столбцов, есть какие-либо метки.

input:

 0  1  2  3  4
 a  b  c  d  e

Результат:

0
a,b,c,d,e

, пожалуйста, помогите мне с этим.

Я уже пробовал data1['all'] = data[data.columns[1:]].apply(lambda x: ','.join(x.dropna().astype(str)),axis=1)

но я не могу получить требуемый результат.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2020

Ваше решение работает для меня с небольшой модификацией: удалена выписка из первого столбца и присвоено ему DataFrame:

data['all'] = data.apply(lambda x: ','.join(x.dropna().astype(str)),axis=1)

Если нет пропущенных значений и нет числовых значений c:

data['all'] = data.apply(','.join,axis=1)

print (data)
   0  1  2  3  4        all
0  a  b  c  d  e  a,b,c,d,e

При необходимости новый столбец DataFrame:

df = = data.apply(lambda x: ','.join(x.dropna().astype(str)),axis=1).to_frame('new')
#df = data.apply(','.join,axis=1).to_frame('new')
print (df)
         new
0  a,b,c,d,e
0 голосов
/ 01 апреля 2020

Вы можете вообще отказаться от применения и использовать Pandas 'встроенные строковые методы; в этом случае конкатенация строк

#merge the other columns to '0' and specify a delimiter
df['0'].str.cat(df.loc[:,'1':],sep=',')

 0    a,b,c,d,e
Name: 0, dtype: object  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...