我有两个类似这样的dfs:
Symbol Sector Sub-industry Company Weight SectorSymbol
Ticker
MMM Industrials Conglomerates MCompany 0.602676 XLI
ABT Health Care Equipment Abbott Lab 0.401900 XLV
ABBV Health Care Pharmaceuticals AbbVie Inc 0.550174 XLV
ACN Info Tech Consulting Accenture 0.370650 XLK
ATVI Info Tech Entertainment Activision 0.192788 XLK
以及
MMM ABT ABBV ACN ATVI
Date
2017-01-03 1.4 2.3 4.5 2.1 .7
2017-01-04 .8 3.1 5.2 1.8 1.2
2017-01-05 2.4 2.1 5.5 1.6 1.4
我正在尝试将我在第一个df中定义的“扇区符号”值应用到第二个df(MMM、ABT、ABBV等)中的代码,以便我的第二个df将符号MMM识别为XLI的一部分,ABT识别为XLV等
df1 = pd.DataFrame(
{'Sector': ['Industrials'] + ['Health Care']*2 + ['Info Tech']*2,
'Sub-industry': ['Conglomerates', 'Equipment', 'Pharmaceuticals', 'Consulting', 'Entertainment'],
'Company': ['MCompany', 'Abbott Lab', 'AbbVie Inc', 'Accenture', 'Activision'],
'Weight': [.602676, .4019, .550174, .37065, .192788],
'SectorSymbol': ['XLI', 'XLV', 'XLV', 'XLK', 'XLK']},
index=pd.Index(['MMM', 'ABT', 'ABBV', 'ACN', 'ATVI'], name='Symbol Ticker')
)[['Sector', 'Sub-industry', 'Company', 'Weight', 'SectorSymbol']]
df2 = pd.DataFrame({'MMM': [1.4, .8, 2.4],
'ABT': [2.3, 3.1, 2.1],
'ABBV': [4.5, 5.2, 5.5],
'ACN': [2.1, 1.8, 1.6],
'ATVI': [.7, 1.2, 1.4]},
index=pd.Index(['2017-01-03', '2017-01-04', '2017-01-05'], name='Date')
)[['MMM', 'ABT', 'ABBV', 'ACN', 'ATVI']]
预期的输出将包括分配给一个ticker的数值,程序将把该ticker识别为“XLI,XLV,XLK”的一部分,这样我就可以在df2中搜索MMM的值,并且程序将向我显示多余的移动#及其在(XLI)中的族
1)创建将符号映射到扇区符号的字典
2)使用列表理解获得相关符号的所有扇区符号的有序映射。使用字典上的
get
来允许未映射的证券(参见下面的注释)3)在扇区符号上使用
groupby
,取平均值IIUIC,使用
rename
和来自df1
的两列的dict以及,合并列的平均值
相关问题 更多 >
编程相关推荐