[英]Format dataframe to equal length time-series format
我有一個 dataframe
time. item. value1. value2
-----------------------------------
1 1 3 4
2 1 2 5
1 2 3 5
3 2 2 1
2 3 3 6
3 3 2 5
我想將其轉換為以下
time. item. value1. value2
-----------------------------------
1 1 3 4
2 1 2 5
3 1 nan nan
1 2 3 5
2 2 nan nan
3 2 2 1
1 3 nan nan
2 3 3 6
3 3 2 5
其中所有項目的時間范圍相同,如果不在原始 dataframe 中,則 value1 和 value2 是 nans。 我已經用外部連接做了一些試驗,但沒有成功。
有沒有簡單的方法來做到這一點?
您可以將time
、 item
設置為索引,然后將df.reindex
與pd.MultiIndex.from_product
一起使用
time = df['time'].unique()
item = df['item'].unique()
idx = pd.MultiIndex.from_product([item, time],names=['item', 'time']).swaplevel(0,1)
df.set_index(['time', 'item']).reindex(idx).reset_index()
time item value1 value2
0 1 1 3.0 4.0
1 2 1 2.0 5.0
2 3 1 NaN NaN
3 1 2 3.0 5.0
4 2 2 NaN NaN
5 3 2 2.0 1.0
6 1 3 NaN NaN
7 2 3 3.0 6.0
8 3 3 2.0 5.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.