2016-11-30 6 views
1

У меня есть образец набора данных:выход GroupBy для панд файлов CSV

import pandas as pd 
df = {'ID': ['H1','H2','H3','H4','H5','H6'], 
     'AA1': ['C','B','B','X','G','G'], 
     'AA2': ['W','K','K','A','B','B'], 
     'name':['n1','n2','n3','n4','n5','n6'] 
} 

df = pd.DataFrame(df) 

это выглядит следующим образом:

df 
Out[32]: 
    AA1 AA2 ID name 
0 C W H1 n1 
1 B K H2 n2 
2 B K H3 n3 
3 X A H4 n4 
4 G B H5 n5 
5 G B H6 n6 

Я хочу GroupBy AA1 и AÀ2 (уникальный AA1 ​​и AÀ2 пару) и Безразлично «т имеет значения, какой идентификатор и имя значения уникальные пары медиаторы вместе с ним, и вывод, что в файл .csv, поэтому вывод в файл .csv будет выглядеть следующим образом:

AA1 AA2 ID name 
    C W H1 n1 
    B K H2 n2 
    X A H4 n4 
    G B H5 n5 

я попробовал код:

df.groupby('AA1','AA2').apply(to_csv('merged.txt', sep = '\t', index=False)) 

но to_csv не было признано, что я могу поставить в .Не(), чтобы только выходные результаты GroupBy в файл CSV?

+0

Так вы просто хотите первую строку каждого уникального 'AA1',' AA2' пары? –

+0

Указанное поведение не является групповым. Вы просто сохраняете первое появление уникальной пары AA1-AA2? Или вам нужно как-то объединиться в каждой паре? – 3novak

+0

просто сохраните первое появление уникальной пары AA1 -AA2 – Jessica

ответ

2

Проблема в том, что вы пытаетесь применить функцию to_csv, которой не существует. Во всяком случае, groupby также не имеет метода to_csv. pd.Series и pd.DataFrame сделать.

Что вы действительно должны использовать это drop_duplicates здесь, а затем экспортировать полученный dataframe в CSV:

df.drop_duplicates(['AA1','AA2']).to_csv('merged.txt') 

PS: Если вы действительно хотели получить решение GroupBy, есть этот один, что происходит в 12 раз медленнее, чем drop_duplicates ...:

df.groupby(['AA1','AA2']).agg(lambda x:x.value_counts().index[0]).to_csv('merged.txt') 
0

вы можете использовать groupby с head

df.groupby(['AA1', 'AA2']).head(1) 

enter image description here

Смежные вопросы