我正在尝试构建一个自定义函数,它可以应用于熊猫数据,并根据上个月最后一天的汇率(以Pstng Date为基数)将某种货币的数量转换为本地货币( Pstng Date)的金额。例如,如果张贴日期是2016-03-12,我想按照2016-02-28的汇率折算金额。
我使用的是转换函数的外汇巨蟒库-以下是我的数据文件:
df = pd.DataFrame({
'Crcy': ['DKK','CAD','GBP','USD'],
'Pstng Date': ['2017-01-12','2015-12-15','2016-06-06','2017-08-12'],
'Amount': [100,5000,40,50]
})这是我的功能:
from forex_python.converter import CurrencyRates
c = CurrencyRates()
def convert_rates2(amount,currency,PstngDate):
if currency != 'DKK':
return c.convert(base_cur=currency,dest_cur='DKK',amount=amount \
,date_obj=PstngDate - datetime.timedelta(PstngDate.strftime('%d')))
else:
return amount我试图将其应用于df:
df['Amount, DKK'] = np.vectorize(convert_rates2)(
amount=df['Amount'],
currency=df['Crcy'],
PstngDate=df['Pstng Date']
)但是,我得到以下错误:
AttributeError:'str‘对象没有属性'strftime’
有谁知道如何处理这个问题吗?不同的方法也是非常受欢迎的。
发布于 2017-08-13 15:29:37
你可以试试这样的方法:
from datetime import datetime, timedelta
def convert_rates2(amount,currency,PstngDate):
PstngDate = datetime.strptime(PstngDate, '%Y-%m-%d')
if currency != 'DKK':
return c.convert(base_cur=currency,dest_cur='DKK',amount=amount \
,date_obj=PstngDate - timedelta(PstngDate.day))
else:
return amount这将产生这样的结果:
df['Amount, DKK'] = np.vectorize(convert_rates2)(
amount=df['Amount'],
currency=df['Crcy'],
PstngDate=df['Pstng Date']
)
df
Out[56]:
Amount Crcy Pstng Date Amount, DKK
0 100 DKK 2017-01-12 100
1 5000 CAD 2015-12-15 26375
2 40 GBP 2016-06-06 390
3 50 USD 2017-08-12 317https://stackoverflow.com/questions/45660529
复制相似问题