在雅虎金融的 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 一次计算所有扇区的方程式,按扇区分组
将groupby
与apply
一起使用并将所有索引值转换为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
来自每组 Symbol
列 GroupBy.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
我有一个 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 一次计算所有扇区的方程式,按扇区分组
将groupby
与apply
一起使用并将所有索引值转换为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
来自每组 Symbol
列 GroupBy.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