我有两个数据框 - 一个带有每日索引,另一个带有不规则索引。我想将每日采样到不规则,但使用总和作为fill
方法。
例如,
df0 = pd.DataFrame(index=pd.date_range(start='2018-03-10', periods=10))
df0['dat'] = 1
# df1 has "missing" days
df1 = df0.iloc[[0,3,4,6,9]]
df0 = df0.reindex(df1, method='sum') # NOT A REAL METHOD
我在df0
寻找的结果是:
2018-03-10 1
2018-03-13 3 # sum of indices 1 and 2 and 3
2018-03-14 1
2018-03-16 2 # sum of 5 and 6
2018-03-19 3 # sum of 7, 8, and 9
答案 0 :(得分:1)
您需要使用Index.to_series
使用sum
以及后退和前进填充reindex
来为汇总NAN
创建群组:
df0 = pd.DataFrame(index=pd.date_range(start='2018-03-10', periods=12))
df0['dat'] = 1
a = df1.index.to_series().reindex(df0.index).bfill().ffill()
print (a)
2018-03-10 2018-03-10
2018-03-11 2018-03-13
2018-03-12 2018-03-13
2018-03-13 2018-03-13
2018-03-14 2018-03-14
2018-03-15 2018-03-16
2018-03-16 2018-03-16
2018-03-17 2018-03-19
2018-03-18 2018-03-19
2018-03-19 2018-03-19
2018-03-20 2018-03-19 #<-replace last NaNs by ffill()
2018-03-21 2018-03-19 #<-replace last NaNs by ffill()
Freq: D, dtype: datetime64[ns]
fin = df0.groupby(a).sum()
print (fin)
dat
2018-03-10 1
2018-03-13 3
2018-03-14 1
2018-03-16 2
2018-03-19 5