使用Python:如果两个属性匹配(国家和日期),如何划分两个不同的指标(金额和汇率)?

Using Python: How to divide two different indicators (amount and exchange rate) in case two attributes match (Country AND date)?

我从包含三列 (screenshot of the table) 的经济学研究数据库下载并导入了一个 csv 文件:“国家代码”、“时间”、“指标”。基本上有两种类型的指标(1. 当地货币金额和 2. 欧元汇率)。我如何在 Python 中创建一个新列“EUR_amount”,如果国家代码和月份对于两个项目相同,则将金额除以汇率,例如EUR = amount/rate 国家和时间在哪里匹配?

非常感谢任何帮助! (请记住,我是 python 的菜鸟,这是我关于 Whosebug 的第一个问题。)提前致谢。

编辑:在收到 mozway 的反馈后添加此代码(感谢):

import pandas as pd
df = pd.DataFrame({'country_code':['EU','UK','US','EU','UK','US','EU','UK','US','EU','UK','US','EU','UK','US','EU','UK','US'],
               'date':['2019-03','2019-03','2019-03','2019-04','2019-04','2019-04','2019-05','2019-05','2019-05','2019-03','2019-03','2019-03','2019-04','2019-04','2019-04','2019-05','2019-05','2019-05'],
              'item':['exposure','exposure','exposure','exposure','exposure','exposure','exposure','exposure','exposure','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate','FX-rate'],
              'value':[15000,9000,13000,16500,8750,17000,17000,7999,25000,1.00,1.25,0.90,1,1.23,0.93,1.00,1.24,0.95]})
print(df)

所以,重申一下我的问题:在 country_code 和日期匹配的情况下,如何将项目曝光与项目外汇汇率分开?

您可以先将数据帧分成两部分 - 曝光和 FX-rate

fx = df[df["item"]=="FX-rate"]
exp = df[df["item"]!="FX-rate"]

之后可以使用

merged_df = pd.merge(fx,exp,on=["country_code","date"],how='outer')

有关其他参数和示例,请参阅 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html

以上将导致

country_code date item_x value_x item_y value_y
EU 2019-03 FX-rate 1.00 exposure 15000.0
UK 2019-03 FX-rate 1.25 exposure 9000.0
US 2019-03 FX-rate 0.90 exposure 13000.0
EU 2019-04 FX-rate 1.00 exposure 16500.0
UK 2019-04 FX-rate 1.23 exposure 8750.0
US 2019-04 FX-rate 0.93 exposure 17000.0
EU 2019-05 FX-rate 1.00 exposure 17000.0
UK 2019-05 FX-rate 1.24 exposure 7999.0
US 2019-05 FX-rate 0.95 exposure 25000.0

接下来只是除法问题

merged_df["Convert"] = merged_df["value_y"]/merged_df["value_x"]