我有一個如下所示的資料框。
|items(index)|event|day|
|---- |------|-----|
|1000|[buy, buy]|[2019-03-26, 2019-04-26]|
|1001|[buy, sell]|[2019-05-26, 2019-06-26]|
|1002|[buy, sell]|[2019-04-21, 2019-04-29]|
|1003|[sell, buy]|[2019-03-21, 2019-04-23]|
事件列串列中的值順序對應天列串列中的值順序;因此,1000 的首次買入動作發生在 2019 年 3 月 26 日。
問題是我希望 Datetime 是索引,當前索引是列,所以它看起來像下面這樣。
|day(index)|1000|1001|1002|1003|
|----|------|----- |-----|-----|
|2019-03-21| | | |sell |
|2019-03-26|buy| | | |
|2019-04-21| | |buy | |
|2019-04-23| | | | |
|2019-04-26|buy| | | |
|2019-04-29| | |sell | |
|2019-05-26| |buy| | |
|2019-06-26| |sell| | |
我不知道如何有效地轉換上述資料框。
額外的。

uj5u.com熱心網友回復:
假設您的 df 為:
In [354]: df = pd.DataFrame({'items':[1000, 1001, 1002, 1003], 'event':[['buy', 'buy'], ['buy', 'sell'], ['buy', 'sell'], ['sell', 'buy']], 'day':[['2019-03-26', '2019-04-26'], ['2019-05-26', '2019-06-26'], ['2019-04-21',
...: '2019-04-29'], ['2019-03-21', '2019-04-23']]})
In [355]: df
Out[355]:
items event day
0 1000 [buy, buy] [2019-03-26, 2019-04-26]
1 1001 [buy, sell] [2019-05-26, 2019-06-26]
2 1002 [buy, sell] [2019-04-21, 2019-04-29]
3 1003 [sell, buy] [2019-03-21, 2019-04-23]
df.apply與df.pivot和 一起使用df.fillna:
In [357]: x = df.set_index('items').apply(pd.Series.explode).reset_index()
In [360]: x.pivot('day', 'items', 'event').fillna('')
Out[360]:
items 1000 1001 1002 1003
day
2019-03-21 sell
2019-03-26 buy
2019-04-21 buy
2019-04-23 buy
2019-04-26 buy
2019-04-29 sell
2019-05-26 buy
2019-06-26 sell
uj5u.com熱心網友回復:
IIUC,試試這個:
import pandas as pd
df = pd.DataFrame({'items':[1000,1001,1002,1003],
'event':[['buy', 'buy'],
['buy', 'sell'],
['buy', 'sell'],
['sell', 'buy']],
'day':[['2019-03-26', '2019-04-26'],
['2019-05-26', '2019-06-26'],
['2019-04-21', '2019-04-39'],
['2019-03-21', '2019-04-23']]})
dfe = df.explode(['event', 'day'])
dfe.pivot('day', 'items', 'event').fillna('')
輸出:
items 1000 1001 1002 1003
day
2019-03-21 sell
2019-03-26 buy
2019-04-21 buy
2019-04-23 buy
2019-04-26 buy
2019-04-39 sell
2019-05-26 buy
2019-06-26 sell
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/405395.html
標籤:
下一篇:按鈕中的JavaFX算術運算式
