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
如果重要的话,我正在使用pandas版本0.7.0。
答案 0 :(得分: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