【发布时间】:2022-01-11 14:18:05
【问题描述】:
给定两个数据框df_1 和df_2,如何将df_2 的值聚合到df_1 的行中,使得df_1 中的date 介于open 和df_2 中的close 之间
print df_1
date A B
0 2021-11-01 0.020228 0.026572
1 2021-11-02 0.057780 0.175499
2 2021-11-03 0.098808 0.620986
3 2021-11-04 0.158789 1.014819
4 2021-11-05 0.038129 2.384590
print df_2
open close location division size
0 2021-11-07 2021-11-14 LDN Alpha 120
1 2021-11-01 2021-11-14 PRS Alpha 450
2 2021-10-14 2021-11-27 HK Beta 340
我已经尝试使用 solution 加入我的数据框,现在我需要找到一种聚合方法。 到目前为止我所做的是:
df_2.index = pd.IntervalIndex.from_arrays(df_2['open'],df_2['close'],closed='both')
df_1['events'] = df_1['date'].apply(lambda x : df_2.iloc[df_2.index.get_loc(x)])
print(calls['code'].iloc[0].groupby(['location', 'division'])['size'].sum())
location division
LDN Alpha 421.0
LDN Beta 515.0
NY Alpha 369.0
PRQ Alpha 132.0
Gamma 110.0
我需要这样的东西:
date A B LDN_Alpha LDN_Beta LDN_Gamma PRS_Alpha ...
0 2021-11-01 0.020228 0.026572 120 300 0 530
1 2021-11-02 0.057780 0.175499 ...
2 2021-11-03 0.098808 0.620986
3 2021-11-04 0.158789 1.014819
4 2021-11-05 0.038129 2.384590
其中创建的列是由location 和division 分组的size 的总和
【问题讨论】:
-
转置然后 agg 怎么样?
-
我认为我们需要更多的转置,首先我们需要一种聚合方式(鉴于在列事件中我们有一个完整的数据框;目前我们没有解决方案聚合它)显示的只是单个单元格上的聚合 .iloc [0] 你能放下一个我理解你的逻辑的代码 sn-p,谢谢
标签: python pandas dataframe pandas-groupby