首页 > 解决方案 > Python:如何将货币对与以相反顺序形成的货币对相同?

问题描述

我想按货币对对行进行分组,但遇到了一些问题。从输入来看,对于前两行,USDGBP 和 GBPUSD 实际上指的是同一个货币对,但货币的顺序是相反的。如何将它们视为相同并按相同货币对对 VR 列求和?非常感谢!

输入可以在下面找到:

  Qualifier FirstCurrency SecondCurrency            VR
0    USDGBP           USD            GBP  50000
1    GBPUSD           GBP            USD  60000
2    BRLUSD           BRL            USD  90000
3    EURQAR           EUR            QAR  30000
4    HKDKRW           HKD            KRW -10000
5    CNYSGD           CNY            SGD  20000
6    RUBTRY           RUB            TRY -14570
7    KRWBRL           KRW            BRL  28650

标签: pythonpandasdatabasedataframe

解决方案


您可以尝试tuple在发送货币后进行

df['grpupable'] = df['Qualifier'].apply(lambda x: tuple(sorted([x[:3], x[3:]])))

示例:现在您可以将它们分组为

df.groupby(['grpupable'])['VR'].sum()
grpupable
(BRL, KRW)     28650
(BRL, USD)     90000
(CNY, SGD)     20000
(EUR, QAR)     30000
(GBP, USD)    110000
(HKD, KRW)    -10000
(RUB, TRY)    -14570

更新: 更改FirstCurrencyLastCurrency使用。或者您可以创建一个新列

df['FirstCurrency'] = df['grpupable'].str[0]
df['SecondCurrency'] = df['grpupable'].str[1]
# or
# df['CurrencyA'] = df['grpupable'].str[0]
# df['CurrencyB'] = df['grpupable'].str[1]

推荐阅读