【发布时间】:2017-12-10 02:42:03
【问题描述】:
我有两个数据框,一个带有一些购买数据,一个带有周历,例如
df1:
purchased_at product_id cost
01-01-2017 1 £10
01-01-2017 2 £8
09-01-2017 1 £10
18-01-2017 3 £12
df2:
week_no week_start week_end
1 31-12-2016 06-01-2017
2 07-01-2017 13-01-2017
3 14-01-2017 20-01-2017
我想使用两者中的数据向 df1 添加一个“week_no”列,该列是根据 df1 中的“purchased_at”日期位于 df2 中的“week_start”和“week_end”日期之间的位置从 df2 中选择的,即
df1:
purchased_at product_id cost week_no
01-01-2017 1 £10 1
01-01-2017 2 £8 1
09-01-2017 1 £10 2
18-01-2017 3 £12 3
我已经搜索过,但我无法找到使用两者之间的比较从第二个数据帧中提取数据的示例,并且我无法正确应用我找到的任何示例,例如
df1.loc[(df1['purchased_at'] < df2['week_end']) &
(df1['purchased_at'] > df2['week_start']), df2['week_no']
不成功,出现 ValueError 'can only compare same-labeled Series objects'
任何人都可以帮助解决这个问题,或者如果有更好的方法可以达到相同的结果,我愿意接受建议。
编辑以添加 df1 的更多细节
df1 完整的数据帧头
purchased_at purchase_id product_id product_name transaction_id account_number cost
01-01-2017 1 1 A 1 AA001 £10
01-01-2017 2 2 B 1 AA001 £8
02-01-2017 3 1 A 2 AA008 £10
03-01-2017 4 3 C 3 AB040 £12
...
09-01-2017 12 1 A 10 AB102 £10
09-01-2017 13 2 B 11 AB102 £8
...
18-01-2017 20 3 C 15 AA001 £12
所以purchase_id随着每一行递增,product_id和product_name是1:1的关系,transaction_id也递增递增,但是一个事务中可以有多次购买。
【问题讨论】:
标签: python pandas numpy dataframe