python pandas итерация строк двух разных столбцов и возвращение повторенного одного раза и соответствующих значений повторяющихся значений в одной строке - PullRequest
0 голосов
/ 29 февраля 2020
Например,

, у меня есть файл .csv с тысячами строк, как показано ниже:

year,name
1992,Alex
1992,Anna
1993,Max
1993,Bob
1993,Tom

и т. Д. *

Я хочу, чтобы мой вывод был:

   year           name
   1992     Alex, Anna
   1993  Max, Bob, Tom

это выглядит просто, но я не могу сделать соответствующие строки в одной строке с добавлением запятой ','

Ответы [ 3 ]

2 голосов
/ 29 февраля 2020

Этого можно добиться с помощью группирования и агрегации. Попробуйте следующий код:

df = df.groupby("year").agg({
    "year":"first",
    "name":", ".join
                          })

Вы можете сохранить значения кадра данных в CSV, игнорируя индекс

df.to_csv("output.csv",index=False)
1 голос
/ 29 февраля 2020

Это может вам помочь

df = df.groupby('year')['name'].unique().reset_index()
df['name'] = df['name'].apply(lambda x: ', '.join(x))

Вывод:

   year           name
0  1992     Alex, Anna
1  1993  Max, Bob, Tom
0 голосов
/ 12 марта 2020

Как насчет этого?

import pandas as pd
x = pd.DataFrame.from_dict({'year':['1992', '1992', '1993', '1993', '1993'], 
                            'name':['ALEX', 'ANNA', 'MAX', 'BOB', 'TOM'],
                             'col':range(5)})
print (x)

a = x.groupby('year').agg({'name': lambda x: tuple(set(x)), 'col':'sum'})
print (a)

Результат:

                 name  col
year                      
1992     (ALEX, ANNA)    1
1993  (BOB, TOM, MAX)    9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...