gpt4 book ai didi

pandas - 为什么 groupby.apply 返回重复级别

转载 作者:行者123 更新时间:2023-12-02 01:22:44 27 4
gpt4 key购买 nike

def afun(group):
aa=len(group)
group.sort_values(inplace=True)

return pandas.DataFrame({'score':numpy.arange(aa),'price':group})



df = pandas.DataFrame({
'stock':numpy.repeat( ['AAPL','GOOG','YHOO'], 3 ),
'date':numpy.tile( pandas.date_range('5/5/2015', periods=3, freq='D'), 3 ),
'price':(numpy.random.randn(9).cumsum() + 10) ,
'price2':(numpy.random.randn(9).cumsum() + 10)})
df = df.set_index(['stock','date'])
agroupDf=df.groupby(level='date')



tt=agroupDf['price'].apply(afun)

变量tt的值如图

我的问题是为什么 tt 有两列“日期”,以及如何避免第二列“日期”?

enter image description here

最佳答案

第一个是 groupby '日期'。第二个是 index '日期'。

改变一切 - 这次 groupby股票:

df       = df.set_index(['date','stock'])
agroupDf = df.groupby(level='stock')

tt=agroupDf['price'].apply(afun)
tt


price score
stock date stock
AAPL 2015-05-05 AAPL 9.333143 0
2015-05-06 AAPL 9.680022 1
2015-05-07 AAPL 9.870889 2
GOOG 2015-05-06 GOOG 10.030032 0
2015-05-05 GOOG 10.229084 1
2015-05-07 GOOG 10.571631 2
YHOO 2015-05-07 YHOO 9.996925 0
2015-05-05 YHOO 10.342180 1
2015-05-06 YHOO 10.586120 2

我想你想要这个:
df       = df.set_index('stock')
agroupDf = df.groupby('date')

tt=agroupDf['price'].apply(afun)
tt

price score
date stock
2015-05-05 AAPL 10.414396 0
GOOG 12.608225 1
YHOO 12.830496 2
2015-05-06 AAPL 10.428767 0
GOOG 11.189663 1
YHOO 11.988177 2
2015-05-07 YHOO 11.202677 0
AAPL 11.274440 1
GOOG 11.780654 2

关于pandas - 为什么 groupby.apply 返回重复级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com