【发布时间】:2014-03-26 22:54:46
【问题描述】:
我有一些simple data 的表格
>>> gerber.head()
sex yob voting hawthorne civicduty neighbors self control
0 0 1941 0 0 1 0 0 0
1 1 1947 0 0 1 0 0 0
2 1 1982 1 1 0 0 0 0
3 1 1950 1 1 0 0 0 0
4 0 1951 1 1 0 0 0 0
并希望找到投票者比例最高的类别(即布尔值列)(即voting == 1在类别中的比例最高)。我可以这样做
gerber.groupby('voting').sum().apply(lambda x: x/x.sum()).iloc[1]
生成一个简单的表格
sex 0.309893
yob 0.315449
hawthorne 0.322375
civicduty 0.314538
neighbors 0.377948
self 0.345151
control 0.296638
Name: 1, dtype: float64
我可以检查给我我想要的东西。这是我正在寻找的数据,但必须有 (a) 一种使用 Python 和 Pandas 表达这一点的更好方法,以及 (b) 一种仅返回类别名称的方法(此处为“邻居”)。
如何使用 Pandas 在 Python 中简洁地表达这一点?
【问题讨论】:
-
你能澄清一下“选民比例最高的类别”是什么意思吗?
-
@8one6:每列1的比例;所以这里是“邻居”。
-
这对
yob列有什么作用? -
好的。请参阅下面的符合这些 cmets 的答案。
-
您的解决方案(上图)将非常奇怪地受到
yob列的影响,因为其中包含如此多的数字...您是否对上面的确切代码给出了您想要的结果感到满意当应用于您链接到的确切文件时?
标签: python pandas indexing aggregate dataframe