name.sum() 在 python 中返回单个记录而不是记录总和



所以我是一个学习python的新手。基本上,我所做的只是遵循文档并亲自尝试类似。我创建了一个以名称和出生作为列的数据帧,并使用随机种子来填充它。但是当我尝试按名称对其进行分组并尝试返回唯一名称的总和值时,它只是给了我与之关联的所有随机数,而不是给我它的总和。

这是我的输出的样子:

Births
Names                                                     
Erdogan  [188][180][172][56][192][74][199][76][103][144...
Jamal    [97][191][176][65][58][163][164][81][157][102]...
Mehdi    [160][151][175][80][186][164][134][180][70][66...
Yassir   [68][76][154][126][77][52][142][60][124][71][5...

这是我的代码:

name = df.groupby('Names')
df = name.sum()
print(df)

检查列类型,如下所示

df.dtypes

如果Births的数据类型是 OBJECT,则转换为int,如下所示

df['Birth'] = df['Birth'].astype(int)

现在进行分组和求和

我试图猜测您的原始数据帧是什么,并设法得到类似的结果:

df = pd.DataFrame({'name':['a','d','a','d'],'Births':['[188]','[180]','[172]','[56]']})
print(df.groupby('name').sum())
# then the result is:
#           Births
# name            
# a     [188][172]
# d      [180][56]

问题是列"出生"的类型不正确,您需要将'[186]'映射到186,然后才能获得所需的结果。

df['Births'] = df['Births'].apply(lambda x: int(x[1:-1]))
print(df.groupby('name').sum())
#       Births
# name        
# a        360
# d        236

最新更新