Я хочу объединить содержимое одного помеченного столбца из одного набора данных.

Начиная с этого:

Index  Name  Name  Name
0      Olaf  Olaf  Eddy
1      Jim   Lola  Olaf

Для этого я пробовал это:

df.set_index('Index').stack().reset_index(level=0, drop=True).to_frame('Name').reset_index()

Возвращено AttributeError: у объекта «DataFrame» нет атрибута «to_frame»

Я ожидаю этого:

Index  Name
0      Olaf
1      Jim
2      Olaf
3      Lola
4      Eddy
5      Olaf
1
eleicht 19 Апр 2019 в 20:17

2 ответа

Лучший ответ

Вы можете использовать pd.melt() здесь ( при условии, что Index не столбец, а индекс):

df.melt(value_name='Name').drop('variable',1)

   Name
0  Olaf
1   Jim
2  Olaf
3  Lola
4  Eddy
5  Olaf
2
anky 19 Апр 2019 в 17:20

Можно также построить новый DataFrame

import pandas as pd
from itertools import chain

pd.DataFrame(chain.from_iterable(zip(*df.filter(like='Name').to_numpy())), 
             columns=['Name'])

#   Name
#0  Olaf
#1   Jim
#2  Olaf
#3  Lola
#4  Eddy
#5  Olaf
1
ALollz 19 Апр 2019 в 17:45