2016-08-03 4 views
1

私があるとき、私はkeyword列にデータを格納するためにnecessary- -AS追加keyword列を作成したい3つの列(IDkey、およびword各行が重複行のすべてのデータを格納するようにデータフレームを変更する方法?

ID key word 
0 1 A Apple 
1 1 B Bug 
2 2 C Cat 
3 3 D Dog 
4 3 E Exogenous 
5 3 E Egg 

と、このデータフレームを持っています重複している行はIDs

これは出力の抜粋です

ID key_0 key_1 word_0 word_1 
0 1  A  B Apple  Bug 

注:重複IDに関連付け"key""B"新しいカラム"key_1"に格納されるように、上記出力ID1は、データフレームに二回登場。重複番号ID1にあるBugという単語は、新しい列word_1にも格納されます。

完了出力は次のことを好きでなければならない:完全な出力の

ID key_0 key_1 key_2 word_0  word_1 word_2 
0 1  A  B  NaN Apple   Bug  NaN 
1 2  C NaN  NaN  Cat   NaN  NaN 
2 3  D  E  E  Dog  Exogenous  Egg 

お知らせ、ID3を3回繰り返しました。 2番目のリピート"E"key"key_1"カラムに格納され、3番目のリピート"E"は新しいカラム"key_2"に格納されます。これは同じマンナの"Exogenous""Egg"という単語に当てはまります。

は私がAlex'sソリューション有用であることが判明、それだけでkey列に動作します:

df.groupby('ID')['key'].apply(
lambda s: pd.Series(s.values, index=['key_%s' % i for i in range(s.shape[0])])).unstack(-1) 

任意のアイデアはどのように私は、ラムダ関数はkeyword列の両方のために働くことができますか?

あなたはアレックスのソリューションを使用した後に連結を使用することができ、

答えて

1
df2 = df.set_index('ID').groupby(level=0).apply(lambda df: df.reset_index(drop=True)).unstack() 
df2.columns = df2.columns.set_levels((df2.columns.levels[1]).astype(str), level=1) 
df2.columns = df2.columns.to_series().str.join('_') 
df2 

enter image description here

0

ありがとう:

df1 = df.groupby('ID')['key'].apply(
lambda s: pd.Series(s.values, index=['key_%s' % i for i in range(s.shape[0])])).unstack(-1) 

df2 = df.groupby('ID')['word'].apply(
lambda s: pd.Series(s.values, index=['word_%s' % i for i in range(s.shape[0])])).unstack(-1) 

df3 = pd.DataFrame({'ID':df['ID'].unique()}) 

df_new = pd.concat([df1,df2,df3],axis=1) 
+0

をこれはエラーになります.. 'TypeError:非NDFrameオブジェクトを連結できません' @Gaurav Dhama – MEhsan

+0

私はunique()がデータフレームではなくndarrayを与えることを忘れています。これを反映するために答えを変更しました。 –

0

pivot_tableと別の解決策:

df['cols'] = df.groupby('ID')['ID'].cumcount().astype(str) 
df1 = df.pivot_table(index='ID', columns='cols', values=['key','word'], aggfunc=''.join) 
df1.columns = ['_'.join(col) for col in df1.columns] 
print (df1) 
    key_0 key_1 key_2 word_0  word_1 word_2 
ID           
1  A  B None Apple  Bug None 
2  C None None Cat  None None 
3  D  E  E Dog Exogenous Egg 
関連する問題