Python 熊猫:用变量n求n行的平均值
我有两个数据帧,分别称为A和B。A有elementID、startDate、endDate列,而B有elementID、date和dataValue列。我想在A中添加一个“average”列。对于A中的任何特定行,我们应该有Python 熊猫:用变量n求n行的平均值,python,pandas,dataframe,moving-average,Python,Pandas,Dataframe,Moving Average,我有两个数据帧,分别称为A和B。A有elementID、startDate、endDate列,而B有elementID、date和dataValue列。我想在A中添加一个“average”列。对于A中的任何特定行,我们应该有row.average=B[(B.elementID==row.elementID)&(row.startDate=B.date)].mean()。 目前,我只是天真地遍历A的每一列,并计算B[(B.elementID==row.elementID)&(row.startDa
row.average=B[(B.elementID==row.elementID)&(row.startDate=B.date)].mean()。
目前,我只是天真地遍历A的每一列,并计算B[(B.elementID==row.elementID)&(row.startDate=B.date)].mean()。但是,A和B的行数都在1000万行左右,并且开始/结束日期可能相隔2年,因此这种方法花费的时间太长
具体来说,A看起来像
ID startDate endDate
3093 2015-01-09 2015-01-23
3093 2015-01-13 2015-03-20
3093 2015-01-20 2015-02-27
3093 2015-01-26 2015-03-06
3093 2015-01-27 2015-04-17
3093 2015-02-01 2015-07-17
3093 2015-02-03 2015-02-27
3093 2015-02-04 2016-01-15
...
ID date dataValue
512 2014-12-31 0.1285
3093 2014-12-31 0.1176
3101 2014-12-31 0.1591
3103 2015-01-12 0.3001
3105 2015-01-12 0.2306
3107 2015-01-12 0.1524
3107 2015-01-13 0.0000
3107 2015-01-14 0.1739
3112 2015-01-15 0.0370
...
B看起来像
ID startDate endDate
3093 2015-01-09 2015-01-23
3093 2015-01-13 2015-03-20
3093 2015-01-20 2015-02-27
3093 2015-01-26 2015-03-06
3093 2015-01-27 2015-04-17
3093 2015-02-01 2015-07-17
3093 2015-02-03 2015-02-27
3093 2015-02-04 2016-01-15
...
ID date dataValue
512 2014-12-31 0.1285
3093 2014-12-31 0.1176
3101 2014-12-31 0.1591
3103 2015-01-12 0.3001
3105 2015-01-12 0.2306
3107 2015-01-12 0.1524
3107 2015-01-13 0.0000
3107 2015-01-14 0.1739
3112 2015-01-15 0.0370
...
B
中的ID是否唯一?否,但(ID,日期)组合是唯一的。我把它编辑得更清楚了。