私は、リスト内のアイテムを取得するためにCSVを再形成しようとしています。python pandasカテゴリー内のアイテムのリストを取得するcsvを変更する
私はトップテーブルのようなものがあり、ボトムテーブルを取得したいと考えています。前もって感謝します!このジュリアよう
私は、リスト内のアイテムを取得するためにCSVを再形成しようとしています。python pandasカテゴリー内のアイテムのリストを取得するcsvを変更する
私はトップテーブルのようなものがあり、ボトムテーブルを取得したいと考えています。前もって感謝します!このジュリアよう
、
import pandas as pd
df = pd.DataFrame({'mmddyyyy':['1/22/17']*5,
'customer_id':[1,1,2,2,2],
'order_id':[67,67,50,51,51],
'item_id':['hat','hat','pants','hat','pants']})
df
出力:
customer_id item_id mmddyyyy order_id
0 1 hat 1/22/17 67
1 1 hat 1/22/17 67
2 2 pants 1/22/17 50
3 2 hat 1/22/17 51
4 2 pants 1/22/17 51
さて、その後、apply
とlist
でreset_index
をgroupby
を実行してみましょう:
df.groupby(['mmddyyyy','customer_id','order_id'])['item_id']\
.apply(list).reset_index()
出力RESU lt df:
mmddyyyy customer_id order_id item_id
0 1/22/17 1 67 [hat, hat]
1 1/22/17 2 50 [pants]
2 1/22/17 2 51 [hat, pants]
次のようにします。
import pandas as pd
dataframe_top = pd.read_csv('your_file.csv')
dataframe_bottom = dataframe_top.groupby('order_id').agg({
'mmddyyyy': 'first',
'customer_id': 'first',
'item_id': lambda x: list(x)
}).reset_index()
あるいは、以下にさらに動作するはず:
import pandas as pd
dataframe_top = pd.read_csv('your_file.csv')
dataframe_bottom = dataframe_top\
.groupby(['mmddyyyy', 'customer_id', 'order_id'])\
.apply(list)[['item_id']]\
.reset_index()
の両方の場合において、我々は、order_id
によってグループ化、およびカラムitem_id
に機能list
を適用しています。 2番目のケースでは、最初の3つの列によるグループ化は、結果の表の行構造を変更しません。なぜなら、すべての指図IDはmmddyyyy
とcustomer_id
と同じであるからです。
groupby
方法については、以下を参照してください。 https://chrisalbon.com/python/pandas_apply_operations_to_groups.html
はagg
方法については、以下を参照してください。 (それが唯一のgroupby
メソッドの最後に追加することができ、すなわち、groupby
オブジェクトのメソッド、) http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html (リンクでIn [20]:
とIn [21]:
までスクロールダウンします。)
EDIT:最後の注意:あなたはこのよろしいですあなたが欲しいものは何ですか?これはいくつかの究極の目標への中間的なステップに似ています。私はあなたの究極の目標は実際にこの変換を必要としないが、他のいくつかのgroupby
機能性を必要とすると確信しています。代わりに最終目標を達成する方法について質問することを検討してください。
私に勝つ戦略のように見えます! – piRSquared