【发布时间】:2019-02-08 22:23:43
【问题描述】:
我有一个如下所示的数据框:
d = {'from': ['apple', 'banana', 'orange', 'banana', 'apple', 'orange'],
'to': ['banana', 'orange', 'apple', 'orange', 'banana', 'apple'],
'month': ['Aug-18', 'Aug-18', 'Aug-18', 'Sep-18', 'Sep-18','Sep-18']}
df = pd.DataFrame(data=d)
出来:
from to month
0 apple banana Aug-18
1 banana orange Aug-18
2 orange apple Aug-18
3 banana orange Sep-18
4 apple banana Sep-18
5 orange apple Sep-18
我有一个 CSV 参考表/查找表,如下所示:
product start_date end_date weight grade
apple 01/06/2018 31/08/2018 heavy a
orange 01/06/2018 31/08/2018 heavy c
banana 01/06/2018 31/08/2021 heavy b
apple 01/09/2018 31/12/2021 small a
orange 01/09/2018 31/12/2021 heavy a
注意:在参考/查找中,维度可能会因月而异。
我需要在我的数据框中插入 4 个新列:(1) from_weight,(2) to_weight,(3) from_grade (4) to_grade。并根据时间戳将数据框中的值与参考表合并以获得此结果:
from to month from_weight to_weight from_grade to_grade
0 apple banana Aug-18 heavy heavy a b
1 banana orange Aug-18 heavy heavy b a
2 orange apple Aug-18 heavy heavy a a
3 banana orange Sep-18 heavy heavy b a
4 apple banana Sep-18 small heavy a b
5 orange apple Sep-18 heavy small a a
【问题讨论】:
-
您自己尝试过任何代码吗?你的困难是什么?
-
你能解释一下输出表是如何创建的吗?
-
我会将 csv 文件上的开始日期转换为与您的数据框中类似的格式,并尝试合并两次,一次用于“从”和“开始日期”,然后用于“到”和结束日期。相反,如果您的数据很小,您可以编写一个循环来查找 csv 文件中的相应值。
-
您的语言环境是什么?
Sept不是九月的标准缩写。 -
我的困难是我不知道从哪里开始。输出表应在我的数据框中插入 4 个新列,然后使用基于相关月份的参考表中的值填充这些列。例如,对于 'apples' 在 8 月返回 weight=heavy 对于 'apples' 在 9 月 weight=small
标签: python pandas merge timestamp