【发布时间】:2017-10-07 12:02:25
【问题描述】:
我发现自己在尝试解决这个问题时迷失了方向(自动化税务文书工作)。我有两个数据框:一个是欧元/美元汇率的季度历史记录,另一个是我自己的发票,例如:
import pandas as pd
import numpy as np
usdeur = [(pd.Timestamp('20170705'),1.1329),
(pd.Timestamp('20170706'),1.1385),
(pd.Timestamp('20170707'),1.1412),
(pd.Timestamp('20170710'),1.1387),
(pd.Timestamp('20170711'),1.1405),
(pd.Timestamp('20170712'),1.1449)]
labels = ['Date', 'Rate']
rates = pd.DataFrame.from_records(usdeur, columns=labels)
transactions = [(pd.Timestamp('20170706'), 'PayPal', 'USD', 100, 1),
(pd.Timestamp('20170706'), 'Fastspring', 'USD', 200, 1),
(pd.Timestamp('20170709'), 'Fastspring', 'USD', 100, 1),
(pd.Timestamp('20170710'), 'EU', 'EUR', 100, 1),
(pd.Timestamp('20170710'), 'PayPal', 'USD', 200, 1)]
labels = ['Date', 'From', 'Currency', 'Amount', 'Rate']
sales =pd.DataFrame.from_records(transactions, columns=labels)
导致:
我需要在sales['Rate'] 列中填充来自rates['Rate'] 的正确汇率,也就是说:
- 如果
sales['Currency']是'EUR',别管它。 - 对于
sales的每一行,找到rates中匹配'Date'的行;抓住rates['Rate']的值并将其放入sales['Rate'] - 奖励:如果没有匹配的
'Date'(例如在假期期间,交易所休市),请检查上一行,直到找到合适的值。
完整结果应如下所示(注意第 2 行的汇率为 2017-07-07):
我尝试从其他问题中遵循几个建议的解决方案,但没有成功。 提前非常感谢您
【问题讨论】: