我正在尝试从pd std()获取索引值。 我的最终目标是将索引与另一个df匹配并插入相应的值(标准偏差)。
(in): df_std['index'] = df_std.index
(out): Index([u'AAPL US Equity', u'QQQ US Equity', u'BRABCBACNPR4 BZ Equity'...dtype='object')
但是,由于类型的原因,我无法将索引添加到df_std的“右侧”:df_std.index是一个系列,而df_std是一个df。当我尝试这样做时,会添加一行而不是一列:
(in): df_std['index'] = df_std.index
(out):
BRSTNCLF1R25 Govt 64.0864
BRITUBACNPR1 BZ Equity 2.67762
BRSTNCNTB4O9 Govt 48.2419
BRSTNCLF1R74 Govt 64.901
PBR US Equity 0.770755
BRBBASACNOR3 BZ Equity 2.93335
BRSTNCLF1R82 Govt 65.0979
index Index([u'AAPL US Equity', u'QQQ US Equity', u'...
dtype: object
我已经尝试将df_std.inde转换为元组和数据帧。
谢谢!
编辑:
我正在尝试将df_std ['index']与df_final ['bloomberg_ticker']匹配,并将std值带到df_final ['std']:
(in): print df_final
(out):
serie tipo tp_cnpjfundo valor id bloomberg_ticker \
0 NaN caixa NaN NaN 0 NaN
1 NaN titpublicos NaN NaN 1 BRSTNCLF1R17 Govt
2 NaN titpublicos NaN NaN 2 BRSTNCLF1R17 Govt
3 NaN titpublicos NaN NaN 3 BRSTNCLF1R25 Govt
(列'id'将在稍后删除)
答案 0 :(得分:1)
使用.reset_index()
而不是指定你拥有的是数据帧,即
df_std = df_std.reset_index()
示例:
df = pd.DataFrame([0,1,2,3], index=['a','b','c','d'])
df = df.reset_index()
输出:
index 0 0 a 0 1 b 1 2 c 2 3 d 3
如果您拥有的是series
,请将其转换为数据帧,然后将其转换为reset_index,即df_std
是否为您所拥有的系列
df_std = df_std.to_frame().reset_index()
我认为我们要做的是将系列的值映射到特定的列,以便您可以使用
df = pd.DataFrame({'col':['a','b','c','d','e'],'vales':[5,1,2,4,5]})
s = pd.Series([1,2,3],index=['a','b','c'])
df['new'] = df['col'].map(s)
输出:
col vales new 0 a 5 1.0 1 b 1 2.0 2 c 2 3.0 3 d 4 NaN 4 e 5 NaN
在您的情况下,您可以使用df_final['index'].map(df_std)
对于条件检查,如果系列索引存在于数据帧的索引列中,则可以使用.isin即
df['col'].isin(s.index) # Returns the boolen mask
df[df['col'].isin(s.index)] #Returns the dataframe based matched index