次のようなデータフレームがあります。
各ユーザーには 10 個のレコードがあります。今、次のようなデータフレームを作成したいと思います。
userid name1 name2 ... name10
つまり、列の 10 レコードごとに反転name
し、新しいデータフレームに追加する必要があります。
それで、それはどのように行うのですか?パンダでそれを行う方法はありますか?
次のようなデータフレームがあります。
各ユーザーには 10 個のレコードがあります。今、次のようなデータフレームを作成したいと思います。
userid name1 name2 ... name10
つまり、列の 10 レコードごとに反転name
し、新しいデータフレームに追加する必要があります。
それで、それはどのように行うのですか?パンダでそれを行う方法はありますか?
groupby('userid')
次にreset_index
、各グループ内で、グループ間で一貫して列挙します。次にunstack
、列を取得します。
df.groupby('userid')['name'].apply(lambda df: df.reset_index(drop=True)).unstack()
df = pd.DataFrame([
[123, 'abc'],
[123, 'abc'],
[456, 'def'],
[123, 'abc'],
[123, 'abc'],
[456, 'def'],
[456, 'def'],
[456, 'def'],
], columns=['userid', 'name'])
df.sort_values('userid').groupby('userid')['name'].apply(lambda df: df.reset_index(drop=True)).unstack()
userid
をインデックスにしたくない場合はreset_index
、末尾に追加します。
df.sort_values('userid').groupby('userid')['name'].apply(lambda df: df.reset_index(drop=True)).unstack().reset_index()