Pandas 在多个时隙上拆分值数据帧
希望将15分钟间隔的值均匀分布在5分钟间隔上。但却无法让它发挥作用。数据如下:Pandas 在多个时隙上拆分值数据帧,pandas,dataframe,datetime,Pandas,Dataframe,Datetime,希望将15分钟间隔的值均匀分布在5分钟间隔上。但却无法让它发挥作用。数据如下: Datetime a 2018-01-01 00:00:00 6 2018-01-01 00:15:00 3 2018-01-01 00:30:00 9 预期的产出将是: Datetime a 2018-01-01 00:00:00 2 2018-01-11 00:05:00
Datetime a
2018-01-01 00:00:00 6
2018-01-01 00:15:00 3
2018-01-01 00:30:00 9
预期的产出将是:
Datetime a
2018-01-01 00:00:00 2
2018-01-11 00:05:00 2
2018-01-11 00:10:00 2
2018-01-11 00:15:00 1
2018-01-11 00:20:00 1
2018-01-11 00:25:00 1
2018-01-11 00:30:00 3
2018-01-11 00:35:00 3
2018-01-11 00:40:00 3
可能是不必要的,但数据中
00:00:00
的值“6”分布在00:00:00-00:10:00
的间隔上,方法略有不同:
# convert to datetime
df.Datetime = pd.to_datetime(df.Datetime)
# set Datetime as index
df.set_index('Datetime', inplace=True)
# add one extra row
df.loc[df.index.max()+pd.to_timedelta('10min')] = 0
# set_index and resample
s = df.asfreq('5T', fill_value=0)
# transform the 0's to mean:
(s.groupby(s['a'].ne(0)
.cumsum())
.transform('mean')
.reset_index()
)
输出:
Datetime a
0 2018-01-01 00:00:00 2
1 2018-01-01 00:05:00 2
2 2018-01-01 00:10:00 2
3 2018-01-01 00:15:00 1
4 2018-01-01 00:20:00 1
5 2018-01-01 00:25:00 1
6 2018-01-01 00:30:00 3
7 2018-01-01 00:35:00 3
8 2018-01-01 00:40:00 3
略有不同的做法:
# convert to datetime
df.Datetime = pd.to_datetime(df.Datetime)
# set Datetime as index
df.set_index('Datetime', inplace=True)
# add one extra row
df.loc[df.index.max()+pd.to_timedelta('10min')] = 0
# set_index and resample
s = df.asfreq('5T', fill_value=0)
# transform the 0's to mean:
(s.groupby(s['a'].ne(0)
.cumsum())
.transform('mean')
.reset_index()
)
输出:
Datetime a
0 2018-01-01 00:00:00 2
1 2018-01-01 00:05:00 2
2 2018-01-01 00:10:00 2
3 2018-01-01 00:15:00 1
4 2018-01-01 00:20:00 1
5 2018-01-01 00:25:00 1
6 2018-01-01 00:30:00 3
7 2018-01-01 00:35:00 3
8 2018-01-01 00:40:00 3
这一个基本上可以工作,但不会对最后一个条目执行操作,这可以从您的输出中记录为well@KVA谢谢,我不知道。我们需要在插值前的最长时间+10分钟再添加一行。请参阅更新。这一项主要起作用,但不会对最后一个条目执行操作,这可以从您的输出中记录为well@KVA谢谢,我不知道。我们需要在插值前的最长时间+10分钟再添加一行。请参阅更新。