在雅虎金融的 df 中分组相似值

Grouping similar values in a df for yahoo finance

我有一个 df 看起来像这样(虽然它扩展到整个 SP500):

        Sector
Symbol
MMM     XLI
ABT     XLV
ABBV    XLV
ACN     XLK
ATVI    XLK

我的问题是,如何根据扇区将符号组合在一起?例如,当我想访问数据时,我希望所有符号都按扇区分组。

到目前为止我已经尝试过:

sector_list = list(df[df['Sector']=='XLV'].index)

这可行,但一次只适用于一个扇区。我想同时计算所有 10 个扇区的 returns,所以我需要一个可以 return 一次计算所有扇区的方程式,按扇区分组

groupbyapply一起使用并将所有索引值转换为list:

s = df.groupby('Sector').apply(lambda x: x.index.tolist())
print (s)
Sector
XLI          [MMM]
XLK    [ACN, ATVI]
XLV    [ABT, ABBV]
dtype: object

reset_index 从索引值中获取列 Symbol,然后通过 Sector groupby 并创建 list 来自每组 SymbolGroupBy.apply:

s = df.reset_index().groupby('Sector')['Symbol'].apply(list)
print(s)
Sector
XLI          [MMM]
XLK    [ACN, ATVI]
XLV    [ABT, ABBV]
Name: Symbol, dtype: object