2017-02-15 4 views
-1

次のDataFrameがあります。各ユーザーが住んでいた都市を説明してくださいパンダでデータをデータフレーム列にグループ化する

 City  Name Date 
0 Seattle Alice 2017 
1 Seattle  Bob 2011 
2 Portland Mallory 2010 
3 Seattle Mallory 2016 
4 Memphis  Bob 2012 
5 Portland Mallory 2013 

パンダでは次のことができますか?

 Name  City1 Date1 City2 Date2 City3 Date3 
0 Alice  Seattle 2017 NaN  NaN  NaN  NaN 
1 Bob  Seattle 2011 Memphis 2012 NaN  NaN 
2 Mallory Portland 2010 Seattle 2016 Portland 2013 

ありがとうございました!

答えて

0

あなたは、unstackその後、sort_indexによってMultiIndex一種の第二のレベルと最後の使用joinを新しいDataFrameを作成するためにそれを削除するカスタム機能でgroupbyを使用することができます。

df1 = df.groupby('Name')['City','Date'] 
     .apply(lambda x: pd.DataFrame(x.values, 
             columns = ['City','Date'], 
             index = np.arange(1, len(x) + 1).astype(str))) 
     .unstack() 
df1 = df1.sort_index(axis=1, level=1).replace({None:np.nan}) 
df1.columns = df1.columns.map(''.join) 
print (df1) 
      City1 Date1 City2 Date2  City3 Date3 
Name              
Alice  Seattle 2017  NaN  NaN  NaN  NaN 
Bob  Seattle 2011 Memphis 2012.0  NaN  NaN 
Mallory Portland 2010 Seattle 2016.0 Portland 2013.0 
関連する問題