如何从列表中查找哪些货币对在列中的所有单元格中都缺少两种货币?

How to find which currency pairs from a list have both currencies missing in all of the cells in a column?

假设您有以下名为 currency_trading_pairs 的列表,其中包含以下元素:

currency_trading_pairs = ['USD/CAD', 'EUR/USD', 'GBP/USD', 'NZD/USD', 'AUD/USD', 
                          'USD/JPY', 'EUR/CAD', 'EUR/AUD', 'EUR/JPY', 'EUR/GBP',
                          'AUD/CAD', 'GBP/JPY', 'CHF/JPY', 'AUD/JPY', 'AUD/NZD']

现在,假设您有以下名为 filtered_df 的数据框,其中包含以下数据:

    Time    Currency    Volatility expected        Event
24  04:30     GBP   Low Volatility Expected        Inflation Expectations
25  05:00     EUR   High Volatility Expected       EU Leaders Summit  
26  05:10     EUR   Low Volatility Expected        Italian 15-Year BTP Auction
27  05:10     EUR   Low Volatility Expected        Italian 3-Year BTP Auction
28  05:10     EUR   Low Volatility Expected        Italian 7-Year BTP Auction
29  06:00     EUR   Low Volatility Expected        Spanish Consumer Confidence
30  06:30     INR   Low Volatility Expected        Bank Loan Growth
31  06:30     INR   Low Volatility Expected        Deposit Growth
32  06:30     INR   Low Volatility Expected        FX Reserves, USD
33  07:00     INR   Low Volatility Expected        Cumulative Industrial Production (Jan)
34  07:00     INR   Low Volatility Expected        Industrial Production (YoY) (Jan)
35  07:00     INR   Low Volatility Expected        Manufacturing Output (MoM) (Jan)
36  07:00     BRL   Moderate Volatility Expected   CPI (YoY) (Feb)
37  07:00     BRL   Moderate Volatility Expected   CPI (MoM) (Feb)
38  08:06     BRL   Moderate Volatility Expected   Brazilian IPCA Inflation Index SA (MoM)(Feb)
39  08:30     CAD   Low Volatility Expected        Capacity Utilization Rate (Q4)
40  08:30     CAD   High Volatility Expected       Employment Change (Feb)
41  08:30     CAD   Low Volatility Expected        Full Employment Change (Feb)
42  08:30     CAD   Low Volatility Expected        Part Time Employment Change (Feb)
43  08:30     CAD   Low Volatility Expected        Participation Rate (Feb)
44  08:30     CAD   Moderate Volatility Expected   Unemployment Rate (Feb)

您如何找到 currency_trading_pairs(列表)中的哪些货币对(元素)在 filtered_dfCurrency 列的所有单元格中都缺少两种货币,以便您可以在名为 the_missing_pairs:

的变量中获得以下输出
the_missing_pairs = ['NZD/USD', 'AUD/USD', 'USD/JPY', 'CHF/JPY', 'AUD/JPY', 'AUD/NZD']

进一步说明:基本上,确保 the_missing_pairs 列表中的所有货币名称不会出现在列中的任何单元格中 Currency 来自 filtered_df.

我实际上会将 currency_trading_pairs 转换为 Series 对象。然后你可以用 /explode 拆分,然后使用 isin,最后 groupby(level=0) + any 来产生完美的面具:

ctp = pd.Series(currency_trading_pairs)
the_missing_pairs = ctp[~ctp.str.split('/').explode().isin(df['Currency']).groupby(level=0).any()].tolist()

输出:

>>> the_missing_pairs
['NZD/USD', 'AUD/USD', 'USD/JPY', 'CHF/JPY', 'AUD/JPY', 'AUD/NZD']