2017-01-06 3 views
1

У меня есть следующие панд dataframe:Как объединить столбцы pandas в одном и том же фрейме?

colA  ColB  ColC 
0    D 
1       G 
2 A  
3    B 
4 C 

Как я могу объединить его в (*):

colA 
0 D 
1 G 
2 A 
3 B 
4 C 

До сих пор я пытался:

df = pd.DataFrame.merge([df.ColA, df.ColB, df.ColC], how='right') 
df 

Однако, это Безразлично Я работал. Как я могу получить (*)?

ответ

1

Вы можете использовать DataFrame.sum:

df = df.sum(axis=1) 

If NaN значения вы можете fillna первым:

df = df.fillna('').sum(axis=1) 

print (df) 
0 D 
1 G 
2 A 
3 B 
4 C 
dtype: object 

Другое решение с apply - join:

df = df.apply(''.join, axis=1) 
#df = df.apply(lambda x: ''.join(x), axis=1) 
print (df) 
0 D 
1 G 
2 A 
3 B 
4 C 
dtype: object 

Решение с Series.combine_first, но нужно NaN значения:

print (df) 
    colA ColB ColC 
0 NaN D NaN 
1 NaN NaN G 
2 A NaN NaN 
3 NaN B NaN 
4 C NaN NaN 

df = df.colA.combine_first(df.ColB).combine_first(df.ColC) 
print (df) 
0 D 
1 G 
2 A 
3 B 
4 C 
Name: colA, dtype: object 
+0

Благодарности Я получил: 'TypeError: присоединиться() не принимает arguments' ключевое слово со вторым раствором. – tumbleweed

+1

Я добавляю альтернативное решение 'df = df.apply (lambda x: '' .join (x), axis = 1)' – jezrael

+0

Теперь я получил: 'TypeError: () получил неожиданный аргумент ключевого слова 'axis'' – tumbleweed

Смежные вопросы