gpt4 book ai didi

python - Pandas 系列 groupby 一组

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:54 25 4
gpt4 key购买 nike

输入:

import pandas as pd
data = pd.DataFrame(data={'date':[pd.Timestamp('2016-02-15')]*3,
'time':[pd.Timedelta(x) for x in ('07:30:00','10:10:00','11:10:00')],'name':['A']*3, 'N':[1,2,3]}
).set_index(['date','time','name']).sort_index()
data = data[ data.index.get_level_values('time')>=pd.to_timedelta('09:30:00') ]
dataGB = data['N'].groupby(['date','name'])
print(data)
print('Number of groups:',len(dataGB))
print(dataGB.sum())
print(pd.__version__)

输出:

>>> print(data)
N
date time name
2016-02-15 10:10:00 A 2
11:10:00 A 3
>>> print('Number of groups:',len(dataGB))
Number of groups: 2
>>> print(dataGB.sum())
date 2
name 3
Name: N, dtype: int64
>>> print(pd.__version__)
0.24.1

问题:

  1. 为什么我得到 2 个组,而明明应该只有一个?
  2. 为什么我从 dataGB.sum() 中得到垃圾以及如何获得预期的(下面的)结果?
dataGB.sum()

预期结果:

>>> dataGB.sum()
date name
2016-02-15 A 5
Name: N, dtype: int64

感谢您的帮助!

最佳答案

这可能是 pd.Series.groupby 的错误,我将针对这种情况在 pandas 中提交错误报告。

解决 #1 使用 pd.DataFrame 而不是 pd.Series

data[['N']].groupby(['date','name']).sum()

输出:

                 N
date name
2016-02-15 A 5

变通方法 #2 在 groupby 中使用 level 参数

data['N'].groupby(level=[0,2]).sum()

输出:

date        name
2016-02-15 A 5
Name: N, dtype: int64

围绕 #3 使用带有聚合器列的数据框:

 data.groupby(['date', 'name'])['N'].sum()

输出:

date        name
2016-02-15 A 5
Name: N, dtype: int64

关于python - Pandas 系列 groupby 一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55129421/

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