Pandas объединить строки с групповым - PullRequest
2 голосов
/ 30 апреля 2020

Я пытаюсь объединить строки в моем фрейме данных. Фрейм данных выглядит так:

0          code   text1
1        507489   text2
2        507489   text3
3        506141   text4
4        506141   text5
5        504273   text6

Мой текущий код:

import pandas as pd

df = pd.read_csv("location.csv", header=None, delimiter=';', dtype='unicode', nrows=100)
new_header = df.iloc[0] 
df = df[1:] 
df.columns = new_header

df.groupby('code').agg('->'.join).reset_index()

df.to_csv (r'new_location\export_dataframe.csv', index = False, header=True)
print(df)

Но я не получаю ожидаемых результатов. Вывод выглядит так же, как и ожидание:

0          code   text1
1        507489   text2->text3
2        506141   text4->text5
3        504273   text6

Совершенно новичок в этом, поэтому я, должно быть, совершил небольшую ошибку.

Кадр данных, который дает тот же результат:

testf = {'code': ['1','2','2','4'],
        'text': [22000,25000,27000,35000]
        }

df = pd.DataFrame(testf, columns = ['code', 'text'])

1 Ответ

2 голосов
/ 30 апреля 2020

Кажется, вы забыли назначить обратно, также был удален header=None в read_csv, потому что в файле есть заголовок, используемый для имен столбцов в DataFrame:

import pandas as pd

df = pd.read_csv("location.csv", sep=';', dtype='unicode', nrows=100)

df = df.groupby('code').agg('->'.join).reset_index()
print (df)
     code         text1
0  504273         text6
1  506141  text4->text5
2  507489  text2->text3

df.to_csv (r'new_location\export_dataframe.csv', index = False)
...