2
我想合并两个数据帧。让我们考虑以下两个DFS:合并两个具有复杂条件的熊猫数据帧
DF1:
id_A, ts_A, course, weight
id1, 2017-04-27 01:35:30, cotton, 3.5
id1, 2017-04-27 01:36:05, cotton, 3.5
id1, 2017-04-27 01:36:55, cotton, 3.5
id1, 2017-04-27 01:37:20, cotton, 3.5
id2, 2017-04-27 02:35:35, cotton blue, 5.0
id2, 2017-04-27 02:36:00, cotton blue, 5.0
id2, 2017-04-27 02:36:35, cotton blue, 5.0
id2, 2017-04-27 02:37:20, cotton blue, 5.0
DF2:
id_B, ts_B, value
id1, 2017-03-27 01:25:40, 100
id1, 2017-03-27 01:25:50, 200
id1, 2017-03-27 01:25:50, 230
id1, 2017-04-27 01:35:40, 240
id1, 2017-04-27 01:35:50, 200
id1, 2017-04-27 01:36:00, 350
id1, 2017-04-27 01:36:10, 400
id1, 2017-04-27 01:36:20, 500
id1, 2017-04-27 01:36:30, 600
id1, 2017-04-27 01:36:40, 700
id1, 2017-04-27 01:36:50, 800
id1, 2017-04-27 01:37:00, 900
id1, 2017-04-27 01:37:10, 1000
id2, 2017-04-27 02:35:40, 1000
id2, 2017-04-27 02:35:50, 2000
id2, 2017-04-27 02:36:00, 4500
id2, 2017-04-27 02:36:10, 3000
id2, 2017-04-27 02:36:20, 6000
id2, 2017-04-27 02:36:30, 5000
id2, 2017-04-27 02:36:40, 5022
id2, 2017-04-27 02:36:50, 5040
id2, 2017-04-27 02:37:00, 3200
id2, 2017-04-27 02:37:10, 9000
DF1应DF2合并使得下列条件成立: 由于时间间隔的差异在df1中的两个连续行之间,我想将它与在该时间间隔内跟随的df2中所有行的平均值合并。例如,
id_A, ts_A, course, weight
id1, 2017-04-27 01:35:30, cotton, 3.5
应合并
id_B, ts_B, value
id1, 2017-04-27 01:35:40, 240
id1, 2017-04-27 01:35:50, 200
id1, 2017-04-27 01:36:00, 350
,并获得
id_A, ts_A, course, weight avgValue
id1, 2017-04-27 01:35:30, cotton, 3.5 263.3
我想看看从另一个角度思考问题 - 这将包括DF2的缺失行成DF1 - 通过使用merge_asof
但我没有得到正确的结果:
pd.merge_asof(df2_sorted, df1, left_on='ts_B', right_on='ts_A', left_by='id_B', right_by='id_A', direction='backward')
非常感谢。我正在将其应用于我的案例。几分钟,我回来了。 –
没问题,仔细检查;) – jezrael
执行df = df.groupby(schema2,as_index = False)['value']。mean().drop('index',axis = 1)时出现以下错误raise DataError ('没有数字类型来聚合') pandas.core.base.DataError:没有数字类型来聚合 –