我有一个pandas.DataFrame
df
带 apandas.DatetimeIndex
和一个名为group_column
. 我需要df
有一个每分钟的频率(意味着每分钟有一排)。
但是,对于 中的每个值都需要如此group_column
,因此每一分钟都可能有多个值。
注意:
在group_column
可以有上百个独特的价值。
某些组可以“持续”几分钟,而其他组可以持续数天,边缘由 中值的第一次和最后一次出现决定group_column
。
例子
输入:
dates = [pd.Timestamp('2018-01-01 12:00'), pd.Timestamp('2018-01-01 12:01'), pd.Timestamp('2018-01-01 12:01'), pd.Timestamp('2018-01-01 12:03'), pd.Timestamp('2018-01-01 12:04')]
df = pd.DataFrame({'group_column': ['a', 'a','b','a','b'], 'data_column': [1.2, 2.2, 4, 1, 2]}, index=dates)
group_column data_column
2018-01-01 12:00:00 a 1.2
2018-01-01 12:01:00 a 2.2
2018-01-01 12:01:00 b 4.0
2018-01-01 12:03:00 a 1.0
2018-01-01 12:04:00 b 2.0
所需的输出:
group_column data_column
2018-01-01 12:00:00 a 1.2
2018-01-01 12:01:00 a 2.2
2018-01-01 12:02:00 a 2.2
2018-01-01 12:03:00 a 1.0
2018-01-01 12:01:00 b 4.0
2018-01-01 12:02:00 b 4.0
2018-01-01 12:03:00 b 4.0
2018-01-01 12:04:00 b 2.0
我的尝试
我已经这样做了,但它似乎非常低效的:
def group_resmaple(df, group_column_name):
values = df[group_column_name].unique()
for value in values:
df_g = df.loc[df[group_column]==value]
df_g = df_g.asfreq('min', 'pad')
yield df_g
df_paded = pd.concat(group_resmaple(df, 'group_column'))
炎炎设计
至尊宝的传说
相关分类