【问题标题】:Using Pandas, how to look up unknown values in column and create new column using function with unknown value as argument?使用 Pandas,如何在列中查找未知值并使用具有未知值的函数作为参数创建新列?
【发布时间】:2021-04-22 17:56:24
【问题描述】:

我正在学习使用 Pandas 来处理来自不同 XLSX 文件的数据,主要是使用 pd.merge 和 loc 方法,它可以创造奇迹。但是我不知道如何画龙点睛……我需要使用相关货币/美元对的美联储数据将“利息”列中的外币金额转换为美元等值。我需要在本季度的最后一天执行此操作。

包含要转换的当地货币金额的数据框如下所示:

data =  pd.DataFrame(
    {
        "Interest": [100, 200, 300, 400],
        "Currency": ['EUR', 'GBP', 'EUR', 'NOK'),
        "Date": ['31/03/2020', '31/03/2020', '30/06/2020', '30/09/2020']
    })

我的货币对数据框如下所示(但在 2020 年每个季度末涵盖 30 多个货币对):

fx = pd.DataFrame(
    {
         "Date": ['31/03/2020', '31/03/2020', '30/06/2020', '30/09/2020'],
         "Currency": ['EUR', 'GBP', 'EUR, 'NOK'],
         "Rate":     [0.80, 0.70, 0.82, 5]
    })

我认为需要一个功能:

1st - 对于数据中列出的每个“货币”项目,在每个“日期”,从 fx 检索适用的汇率

2nd - 将利率应用于数据中的利息金额,并创建一个新列。

我的大问题是 1。stackoverflow 上的许多示例都建议使用 NP WHERE,但我不知道如何定义“条件”,因为我不“知道”数据中将包含哪些货币?

在 Excel 中,我只需对数据中的货币进行 vlookup,(结合 IF 来满足 4 个不同的季度末汇率,具体取决于日期字段,并在新列中检索汇率。如何为此,非常感谢任何指向正确方向的指针。

阿里

【问题讨论】:

  • 你能编辑你的问题并把预期的输出放在那里吗?

标签: pandas function vlookup


【解决方案1】:

基本上,您希望根据索引Currency + Date 加入两个数据框:

data_fx = data.set_index(['Currency', 'Date']).join(fx.set_index(['Currency', 'Date']))

>>>
                         Interest  Rate
Currency    Date            
EUR         31/03/2020   100       0.80
GBP         31/03/2020   200       0.70
EUR         30/06/2020   300       0.82
NOK         30/09/2020   400       5.00

那么你只需要计算感兴趣的列:

data_fx['Interet_USD'] = data_fx['Interest'] * data_fx['Rate']

这假设您每个日期和货币只有 1 个利息值。

【讨论】:

  • 感谢亚历克斯的回复。您的解决方案正是我想要实现的。我没有意识到可以在多个键上加入数据帧。熊猫真棒。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2022-06-14
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多