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