Python Pandas:包含多个相关行的索引

Python Pandas:包含多个相关行的索引,python,pandas,Python,Pandas,考虑到market\u ticker数据帧: import pandas as pd import numpy as np df = pd.DataFrame({'Ticker': ['EWZ US 05/29/20 P27', 'HSI US 12/30/20 C24800', 'TLT US 06/19/20 C225', 'EWZ US 05/29/20 P27'], 'Market': ['US NYSE', 'US NYSE', 'HK HKSE

考虑到
market\u ticker
数据帧:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Ticker': ['EWZ US 05/29/20 P27', 'HSI US 12/30/20 C24800', 'TLT US 06/19/20 C225', 'EWZ US 05/29/20 P27'],
                   'Market': ['US NYSE', 'US NYSE', 'HK HKSE', 'US NYSE']})

df['Reduced_Ticker'] = df['Ticker'].apply(lambda a :" ".join(a.split(" ", 2)[:2]))

market_ticker = df[['Market','Reduced_Ticker']].groupby(['Market']).agg(list)
market_ticker['Reduced_Ticker'] = market_ticker['Reduced_Ticker'].apply(lambda x: pd.unique(x))
market_ticker
如何将索引列表中的每个项转换为与索引本身相关的行?预期产出:

Market  |  Reduced_Ticker

HK SE   |     TLT US
_________________________       
              
US NYSE |  EWZ US
        |  HSI US
        
编辑

事实上,您只需要在原始解决方案上再执行一步:在列上分解
简化的\u Ticker

market_ticker = market_ticker.explode('Reduced_Ticker')
如果您愿意,您仍然可以参考下面我的解决方案:

首先,通过从列
Ticker
切片字符串,创建一个名为
Reduced\u Ticker
的新列。然后只选择所需的列(
Reduced_Ticker and Market
),然后删除重复项

df_out = (
    df
    .assign(Reduced_Ticker = df.Ticker.str[:6])
    [['Market','Reduced_Ticker']]
    .drop_duplicates()
)
这是输出
df\u out

Market  Reduced_Ticker
US NYSE EWZ US
US NYSE HSI US
HK HKSE TLT US
尝试爆炸:

market_ticker.explode('Reduce_Ticker')

    Reduced_Ticker
Market  
HK HKSE TLT US
US NYSE EWZ US
US NYSE HSI US

有没有办法不重复这些指数?这会像把两条线连接起来,把一个美国纽约证券交易所放在中间吗?可能是你想把你的方法改为多索引。看来这条路是对的