私はこのようなデータフレームを持っています。唯一のorder
ユニークです。
vendor order order_class time
33 33 42 22/12/2018
33 39 189 25/12/2018
35 197 91 19/01/2019
35 22 189 18/12/2018
35 11 189 30/11/2018
キーorder_class
と値が次のようにデータフレームをピボットするにはどうすればよいですか[(order1, time1), (order2, time2)]
vendor dict
33 {42 : [(33, 25/12/2018)], 189 : [(39, 25/12/2018)]}
35 {91 : [(197, 19/01/2019)], 189: [(22, 18/12/2018), (11, 30/11/2018)]}
*編集済み
注文クラスには、リストに保存する必要のある複数の(order、time)値を含めることができます。
別のアプローチは、使用してgroupby
、agg
とzip
:
d1 = df.groupby(['vendor', 'order_class']).agg(list).reset_index(level=1)
d2 = d1.apply(lambda s: {s['order_class']: list(zip(s['order'], s['time']))}, axis=1)
d2 = d2.groupby(level=0).agg(lambda s: {k:v for d in s for k, v in d.items()}).rename('_dict').reset_index()
#print(d2)
vendor dict
33 {42 : [(33, 22/12/2018)], 189 : [(39, 25/12/2018)]}
35 {91 : [(197, 19/01/2019)], 189: [(22, 18/12/2018), (11, 30/11/2018)]}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加