重新索引 pandas 数据框中的多索引
Reindexing a multiindex in pandas dataframe
我正在尝试重新索引 2 级多索引 pandas 数据框。数据结构如下所示:
In [1]: df.head(5)
Out [1]: arrivals departs
station datetime
S1 2014-03-03 07:45:00 1 1
2014-03-03 09:00:00 2 1
2014-03-03 11:45:00 1 1
2014-03-04 08:45:00 1 1
2014-03-04 09:45:00 2 1
我想以 15 分钟的间隔填补 datetime
空白,但是当我调用
In [2]: df.reindex(pd.date_range(start='2014-03-03 07:45:00',
end='2014-03-04 07:45:00', freq='15min'), level=1)
我得到了完全相同的数据框。我期待类似下面的内容
Out [2]: arrivals departs
station datetime
S1 2014-03-03 07:45:00 1 1 <-- original row
2014-03-03 08:00:00 0 0 <-- filled in row
2014-03-03 08:15:00 0 0 <-- filled in
2014-03-03 08:30:00 0 0 <-- filled in
2014-03-03 08:45:00 0 0 <-- filled in
2014-03-03 09:00:00 2 1 <-- original
etc...
有什么想法吗?
将其转回简单的日期时间索引并填补空白:
df = (df.unstack(level=0)
.reindex(pd.date_range(start='2014-03-03 07:45:00',
end='2014-03-04 07:45:00', freq='15min')))
df = df.fillna(0) # for the data, 0 is the desired value
df.stack('station').swaplevel(0,1).sort_index()
我正在尝试重新索引 2 级多索引 pandas 数据框。数据结构如下所示:
In [1]: df.head(5)
Out [1]: arrivals departs
station datetime
S1 2014-03-03 07:45:00 1 1
2014-03-03 09:00:00 2 1
2014-03-03 11:45:00 1 1
2014-03-04 08:45:00 1 1
2014-03-04 09:45:00 2 1
我想以 15 分钟的间隔填补 datetime
空白,但是当我调用
In [2]: df.reindex(pd.date_range(start='2014-03-03 07:45:00',
end='2014-03-04 07:45:00', freq='15min'), level=1)
我得到了完全相同的数据框。我期待类似下面的内容
Out [2]: arrivals departs
station datetime
S1 2014-03-03 07:45:00 1 1 <-- original row
2014-03-03 08:00:00 0 0 <-- filled in row
2014-03-03 08:15:00 0 0 <-- filled in
2014-03-03 08:30:00 0 0 <-- filled in
2014-03-03 08:45:00 0 0 <-- filled in
2014-03-03 09:00:00 2 1 <-- original
etc...
有什么想法吗?
将其转回简单的日期时间索引并填补空白:
df = (df.unstack(level=0)
.reindex(pd.date_range(start='2014-03-03 07:45:00',
end='2014-03-04 07:45:00', freq='15min')))
df = df.fillna(0) # for the data, 0 is the desired value
df.stack('station').swaplevel(0,1).sort_index()