使用总和填充值,使用另一个数据帧的索引重新索引数据帧
Reindex a dataframe with the index of an other dataframe using the sum to fill the values
首先用常规索引创建数据帧,这是我想使用 df1 的索引重新采样的 df
df0 = pd.DataFrame(index=pd.date_range(start='2018-10-31 00:17:24', periods=50,freq='1s'))
我不知道如何创建一个具有不规则索引的 df,所以我创建了一个新的数据框(我想使用的索引)来重新采样 df0
df1 = pd.DataFrame(index=pd.date_range(start='2018-10-31 00:17:24', periods=50,freq='20s'))
用于最小可重现示例。创建一个值介于 0 和 1 之间的列
df0['dat'] = np.random.rand(len(df0))
我想找到 dat 列的值大于 0.5 的行
df0['target'] = 0
df0.loc[(df0['dat'] >= 0.5), 'target'] = 1
然后我想使用 df1 的索引重新索引 df0,但是名为 df0['target'] 的列的每一行
应该具有 window
中的值的总和
我试过的是:
new_index = df1.index
df_new = df0.reindex(df0.index.union(new_index)).interpolate(method='linear').reindex(new_index).sum()
但是这个 sum() 搞砸了一切
IIUC:
尝试:
df_new=df0.reindex(df1.index.union(df0.index)).interpolate(method='linear').reset_index()
最后利用pd.Grouper()
和groupby()
:
out=df_new.groupby(pd.Grouper(key='index',freq='1 min')).sum()
首先用常规索引创建数据帧,这是我想使用 df1 的索引重新采样的 df
df0 = pd.DataFrame(index=pd.date_range(start='2018-10-31 00:17:24', periods=50,freq='1s'))
我不知道如何创建一个具有不规则索引的 df,所以我创建了一个新的数据框(我想使用的索引)来重新采样 df0
df1 = pd.DataFrame(index=pd.date_range(start='2018-10-31 00:17:24', periods=50,freq='20s'))
用于最小可重现示例。创建一个值介于 0 和 1 之间的列
df0['dat'] = np.random.rand(len(df0))
我想找到 dat 列的值大于 0.5 的行
df0['target'] = 0
df0.loc[(df0['dat'] >= 0.5), 'target'] = 1
然后我想使用 df1 的索引重新索引 df0,但是名为 df0['target'] 的列的每一行 应该具有 window
中的值的总和我试过的是:
new_index = df1.index
df_new = df0.reindex(df0.index.union(new_index)).interpolate(method='linear').reindex(new_index).sum()
但是这个 sum() 搞砸了一切
IIUC:
尝试:
df_new=df0.reindex(df1.index.union(df0.index)).interpolate(method='linear').reset_index()
最后利用pd.Grouper()
和groupby()
:
out=df_new.groupby(pd.Grouper(key='index',freq='1 min')).sum()