pandas中group by的结果错误
names1880 = pd.read_csv('test.txt', names=['name', 'sex', 'births'])
names1880.groupby('sex').births.sum()
这里用的是1880年的一个示例文件(美国婴儿名字)。我希望得到的结果大概是这样的……
F 90993
M 110493
Name: births
但是我每一行得到的总数都是随机的。
0 58385
1 35818
2 33920
...
1896 57
1897 57
1898 57
我该怎么才能得到正确的男性和女性的结果呢?
更新: 下面的代码似乎按预期工作。这是不是意味着我必须拆分对象,不能把它当作一个方法来用呢?
mygroup=names1880.groupby('sex')
mygroup['births'].sum()
这是test.txt文件的前10行内容。
Mary,F,7065
Anna,F,2604
Emma,F,2003
Elizabeth,F,1939
Minnie,F,1746
Margaret,F,1578
Ida,F,1472
Alice,F,1414
Bertha,F,1320
Sarah,F,1288
我使用的是0.7.0版本的pandas,如果这有影响的话。
1 个回答
1
你写的代码运行得很好。
当我复制你给的数据样本时:
import pandas as pd
data = pd.read_clipboard(sep=',', header = None,
names = ['name', 'sex', 'births'])
data.groupby('sex').births.sum()
它输出的是:
sex
F 22429
你不需要去修改什么,但你随时可以尝试!(也许你的问题是因为你用的Pandas版本太旧了。)
当我添加了一些数据:
Mary,F,7065
Anna,F,2604
Emma,F,2003
Elizabeth,F,1939
Minnie,F,1746
Margaret,F,1578
Ida,F,1472
Jeremy,M,1477
Alice,F,1414
Bertha,F,1320
Sarah,F,1288
Jonathan,M,1255
这里是它输出的结果,正如我预期的那样:
sex
F 22429
M 2732
Name: births, dtype: int64