Python 3.x concat后的groupby,组中缺少的列表示
浓缩两个数据帧,然后按“类型”分组并计算第二个df(即d1~d10)列的平均值,显示在浓缩数据帧中,但不显示在分组平均值中。我可能错过了一些。。。请注明。。。这是密码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('
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是的,这很奇怪,我不知道如何解释这种行为,但很高兴我帮了忙。