【发布时间】:2018-07-17 20:27:08
【问题描述】:
我正在尝试在分组的 DataFrame 中进行上采样,但不确定如何使其仅在组内进行上采样。我有一个看起来像这样的 DataFrame:
cat weekstart date
0.0 2016-07-04 00:00:00+00:00 2016-07-04 1
2016-07-06 1
2016-07-07 2
2016-08-15 00:00:00+00:00 2016-08-16 1
2016-08-19 1
2016-09-19 00:00:00+00:00 2016-09-20 1
2016-09-21 1
2016-12-19 00:00:00+00:00 2016-12-19 1
2016-12-21 1
1.0 2016-07-25 00:00:00+00:00 2016-07-26 2
2016-08-01 00:00:00+00:00 2016-08-03 1
2016-08-08 00:00:00+00:00 2016-08-12 1
如果我执行 df.unstack().fillna(0).stack() 之类的操作会导致:
cat weekstart date
0.0 2016-07-04 00:00:00+00:00 2016-1-1 0
.
.
.
2016-07-04 1
2016-07-06 1
2016-07-07 2
因为日期列中的最小值是 2016-1-1。我所追求的只是在每个“cat”和“weekstart”中采样工作日,例如:
cat weekstart date
0.0 2016-07-04 00:00:00+00:00 2016-07-04 1
2016-07-05 0
2016-07-06 1
2016-07-07 2
2016-07-8 0
2016-08-15 00:00:00+00:00 2016-08-15 0
2016-08-16 1
2016-08-17 0
2016-08-18 0
2016-08-19 1
我尝试过使用:
level_values = df.index.get_level_values
df.groupby(
[level_values(i) for i in [0, 1]] + [pd.Grouper('B', level=-1)]
)
.sum()
但它没有按预期工作。
【问题讨论】:
标签: python pandas pandas-groupby