从pd mean()和std()函数获取索引值

时间:2017-11-01 14:35:12

标签: python-2.7 pandas

我正在尝试从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'将在稍后删除)

1 个答案:

答案 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