Python 3.x concat后的groupby,组中缺少的列表示

Python 3.x concat后的groupby,组中缺少的列表示,python-3.x,pandas,Python 3.x,Pandas,浓缩两个数据帧,然后按“类型”分组并计算第二个df(即d1~d10)列的平均值,显示在浓缩数据帧中,但不显示在分组平均值中。我可能错过了一些。。。请注明。。。这是密码 results=pd.concat([stockpicks,stock_analysis],axis=1) print(stockpicks.head(5)) print(stock_analysis.head(5)) print(results.head(5)) results_typed=results.groupby('

浓缩两个数据帧,然后按“类型”分组并计算第二个df(即d1~d10)列的平均值,显示在浓缩数据帧中,但不显示在分组平均值中。我可能错过了一些。。。请注明。。。这是密码

results=pd.concat([stockpicks,stock_analysis],axis=1)
print(stockpicks.head(5))
print(stock_analysis.head(5))
print(results.head(5))


results_typed=results.groupby('type')
mean_overall=results_typed.mean()

print(mean_overall)
下面是输出

         date  type stocknum  price      pe
0  2014-02-17  cao3  0326.HK   0.20   20.00
1  2014-02-17  cao3  0536.HK   2.56   25.60
2  2014-02-17  cao3  0595.HK   0.97   48.50
3  2014-02-17  cao3  0698.HK   0.95   15.83
4  2014-02-17  cao3  0759.HK   3.25  108.33

[5 rows x 5 columns]
         d1        d2        d5       d10
0        95        95        95        90
1  99.21875       100  97.65625   89.0625
2       100  107.2165  104.1237  93.81443
3  102.1053  97.89474  97.89474  105.2632
4  95.38462  94.15385        92  90.15385

[5 rows x 4 columns]
         date  type stocknum  price      pe        d1        d2        d5  \
0  2014-02-17  cao3  0326.HK   0.20   20.00        95        95        95   
1  2014-02-17  cao3  0536.HK   2.56   25.60  99.21875       100  97.65625   
2  2014-02-17  cao3  0595.HK   0.97   48.50       100  107.2165  104.1237   
3  2014-02-17  cao3  0698.HK   0.95   15.83  102.1053  97.89474  97.89474   
4  2014-02-17  cao3  0759.HK   3.25  108.33  95.38462  94.15385        92   

        d10  
0        90  
1   89.0625  
2  93.81443  
3  105.2632  
4  90.15385  

[5 rows x 9 columns]
          price         pe
type                      
bbom   2.050526   8.135789
bbos   3.136842  10.116316
cao3   1.717368  36.494211
maos   6.661935  20.565161
rscp  48.983333   6.280000

[5 rows x 2 columns]
实际上我一直在重写代码。在我通过重新索引扩展第一个df,然后将值分配给扩展的df之前,groupby'type'并计算分组平均值,一点问题都没有

我正在ubuntu上使用python3.3和pandas 13.1

用于计算d值的语句

days=[1,2,5,10]
p0=stockprice[p0_date]
stock_pct_change={('d'+str(d)):stockprice[p0_date+d]/p0*100.0 if (p0_date+d)< len(trading_days) else np.nan for d in days }
days=[1,2,5,10]
p0=股票价格[p0\U日期]
股票价格变化={('d'+str(d)):股票价格[p0_日期+d]/p0*100.0如果(p0_日期+d)
缺少的列是因为它们是字符串/日期/对象,计算平均值对这些列来说没有意义

在我看来,列d1、d2、d5和d10是字符串,因为输出将它们显示为int/float的混合体

如果要计算这些列的平均值,请更改其数据类型,如下所示:

df.d1 = df.d1.astype(np.float64) 
# do the same for d2..etc..

我编辑了我的原始帖子并引用了计算d值的语句,100.0不是强制执行浮点值吗?我甚至故意用float()将其括起来,但输出仍然缺少这些columns@timeisloved1、d10列的列是什么?您可以使用df.dtypes进行检查,如果它没有说float64,并且说object,那么它很可能是一个float,但我同意它应该从您的代码中推断出这一点,但您的输出在我看来很有趣您是对的。这是关于类型的。我在股票分析的df构造函数中设置了dtype=np.float,它可以。。。我不知道的是,如果我使用StReSyDebug构造默认值=,并且将元素按.LOC设置,dType将不会自动转换为I填充的类型,比如用FLOAT()强制执行,但仍然将元素视为“对象”!!!!奇怪。@timeislove是的,这很奇怪,我不知道如何解释这种行为,但很高兴我帮了忙。