Объединить столбцы с есть \ n - PullRequest
2 голосов
/ 24 марта 2020

ex)

   C1  C2  C3  C4  C5  C6
0  A   B   nan C   A   nan
1  B   C   D   nan B   nan
2  D   E   F   nan C   nan
3  nan nan A   nan nan B

Я объединяю столбцы, но я хочу дать '\ n \ n' в процессе объединения.

, поэтому выведите то, что я хочу

   C
0  A  

   B  

   C

   A
1  B  

   C  

   D

   B
2  D  

   E  

   F

   C
3. A

   B

Я хочу, чтобы значение 'nan' отбрасывалось.

Я пытался

df['merge'] = df['C1'].map(str) + '\n\n' + tt['C2'].map(str) + '\n\n' + tt['C3'].map(str) + '\n\n' + df['C4'].map(str)

Однако сюда входят все значения nan.

спасибо за чтение.

1 Ответ

2 голосов
/ 24 марта 2020

Используйте DataFrame.stack для серии, значения misisng удаляются, поэтому вы можете агрегировать join:

df['merge'] = df.stack().groupby(level=0).agg('\n\n'.join)
#for filter only C columns
df['merge'] = df.filter(like='C').stack().groupby(level=0).agg('\n\n'.join)

или удалять пропущенные значения путем объединения в строки на Series.dropna:

df['merge'] = df.apply(lambda x: '\n\n'.join(x.dropna()), axis=1)
#for filter only C columns
df['merge'] = df.filter(like='C').apply(lambda x: '\n\n'.join(x.dropna()), axis=1)

print (df)
    C1   C2   C3   C4   C5   C6             merge
0    A    B  NaN    C    A  NaN  A\n\nB\n\nC\n\nA
1    B    C    D  NaN    B  NaN  B\n\nC\n\nD\n\nB
2    D    E    F  NaN    C  NaN  D\n\nE\n\nF\n\nC
3  NaN  NaN    A  NaN  NaN    B            A\n\nB
...