Как объединить несколько столбцов одного фрейма данных - PullRequest
0 голосов
/ 21 сентября 2018

Как объединить несколько значений столбцов в один столбец одного и того же фрейма данных и получить новый столбец с уникальными значениями.

 Column1  Column2  Column3  Column4  Column5
 0    a        1        2        3        4
 1    a        3        4        5
 2    b        6        7        8
 3    c        7        7        

Вывод:

Column A
a
a
b
c
1
3
6
7
2
4
5
8

Ответы [ 2 ]

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

Вот еще один способ сделать это, если вы в порядке, используя numpy.Это будет обрабатывать nans или пустые строки в исходном кадре данных и будет немного быстрее, чем unstack или melt.

import pandas as pd
import numpy as np

df = pd.DataFrame({'Column1': ['a', 'a', 'b', 'c'],
                   'Column2': [1, 3, 6, 7],
                   'Column3': [2, 4, 7, 7],
                   'Column4': [3, 5, 8, np.nan],
                   'Column5': [4, '', '', np.nan]})

u = pd.unique(df.values.flatten(order='F'))
u = u[np.where(~np.isin(u, ['']) & ~pd.isnull(u))[0]]
df1 = pd.DataFrame(u, columns=['A'])

print(df1)

    A
0   a
1   b
2   c
3   1
4   3
5   6
6   7
7   2
8   4
9   5
10  8
0 голосов
/ 21 сентября 2018

Используйте unstack или melt для изменения формы, удалите пропущенные значения на dropna и дублируйте на drop_duplicates:

df1 = df.unstack().dropna().drop_duplicates().reset_index(drop=True).to_frame('A')

df1 = df.melt(value_name='A')[['A']].dropna().drop_duplicates().reset_index(drop=True)
print (df1)
    A
0   a
1   b
2   c
3   1
4   3
5   6
6   7
7   2
8   4
9   5
10  8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...