2016-05-24 6 views
0

入力:5列のCSV。Python Pandasのgroupbyカラムを新しいデータフレームとして返す

期待される出力: 'col1'、 'col2'、 'col3'の一意の組み合わせ。

サンプル入力:

col1 col2 col3 col4 col5 

0 A B C 11 30 

1 A B C 52 10 

2 B C A 15 14 

3 B C A  1 91 

サンプル予想される出力:

col1 col2 col3 

A  B  C 

B  C  A 

ただ、出力としてこれを期待。出力にcol4とcol5は必要ありません。また、合計、数、平均などを必要としません。これを達成するためにパンダを使ってみましたが、運はありません。

マイコード:

input_df = pd.read_csv("input.csv"); 

output_df = input_df.groupby(['col1', 'col2', 'col3']) 

このコードは '0x0000000009134278でpandas.core.groupby.DataFrameGroupByオブジェクト' を返しています。 しかし、私は上記のようなデータフレームが必要です。どんな助けでも大歓迎です。

答えて

3
df[['col1', 'col2', 'col3']].drop_duplicates() 
0

まず、あなたがそれらを必要としないと述べたとして、あなたはcol4col5を削除するために.drop()を使用することができます。

df = df.drop(['col4', 'col5'], axis=1) 

その後、あなたはcol1col2col3内の重複rowsを削除するために.drop_duplicates()を使用することができます。

df = df.drop_duplicates(['col1', 'col2', 'col3']) 
df 

出力:

col1 col2 col3 
0 A B C 
2 B C A 

あなたは出力にインデックスが0, 2代わりの0,1であることに気づきました。あなたがこれを行うことができますことを修正するには:

df.index = range(len(df)) 
df 

を出力:

col1 col2 col3 
0 A B C 
1 B C A 
関連する問題