簡體   English   中英

將 dataframe 格式化為等長時間序列格式

[英]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。 我已經用外部連接做了一些試驗,但沒有成功。

有沒有簡單的方法來做到這一點?

您可以將timeitem設置為索引,然后將df.reindexpd.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM