【问题标题】:List comprehension currency conversion pass statement列表理解货币转换通行证
【发布时间】:2021-06-01 09:04:49
【问题描述】:

我正在尝试编写列表推导以将 pandas 数据框中的货币转换为所有美元。我正在使用 forex_python.converter 来获取汇率。

数据如下:

Amount Currency Amount_USD
20 usd
45 cad
17 gbp

我想编写一个循环来应用特定日期的汇率将每一行转换为美元,但如果该行是美元,那么 Amount_USD 应该等于 Amount

到目前为止我已经尝试过:

for currency in currencies:
    if currency == 'usd':
        data['Amount_USD'] == data['Amount']
    else:
        date_obj=datetime.datetime(2020,8,1)
        currency2 = print('"{0}"'.format(currency))
        rate = c.get_rate(currency2,'USD', date_obj)
        data['Amount_USD'] = np.where(data['Currency']== currency2, data['Amount']*rate , np.nan)

但目前该代码将汇率应用于美元价值。

【问题讨论】:

  • 你为什么要currency2 = print('"{0}"'.format(currency))
  • 可能有更好的方法,但对于 c.get_rate() 语句,它需要货币在引号中('usd')。如果不使用格式化程序,货币仅以美元计,没有引号
  • 这与print 有什么关系?你意识到了,currency2 == None,对吗?
  • 我简化了解决方案代码 - rate=1 for USD now

标签: python pandas dataframe list-comprehension currency


【解决方案1】:

我建议重写:

for currency in currencies:
    if currency != 'usd':
        date_obj=datetime.datetime(2020,8,1)
        currency2 = print('"{0}"'.format(currency))
        rate = c.get_rate(currency2,'USD', date_obj)
    else:
        rate = 1
    data.loc[data.currency == currency, 'Amount_USD'] = data['Amount'] * rate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多