Groupby 和 Count Flags 作为 Pandas 中的索引
我有一个数据框,其中有多个产品的标志 0/1 以及帐户以及它们所属的邮政编码。我的目标是计算已创建为标志的列中的 1。
Zip acc A B
32123 214124 1 0
32123 124124 0 0
32123 124124 1 1
32123 124124 1 1
12333 112424 1 1
12333 123131 1 0
12333 214135 1 0
12333 123145 1 0
我的预期输出采用以下格式
Zip Pro #acc
32123 A 3
B 2
12333 A 4
B 1
达到此目的的最佳方法是什么? 我尝试过使用 pd.crosstab/groupby 函数,但 max 达到了这个目的
g.groupby(['ZIP','A','B']).agg({'ACC':'count'})
c.set_index(['ZIP','A','B'])
Zip A B acc
32123 0 0 1
12333 0 0 2
I have a dataframe which has flags 0/1 for multiple products along with accounts and which zipcode they belong to. My Goal is to count the 1's in columns which have been created as flags.
Zip acc A B
32123 214124 1 0
32123 124124 0 0
32123 124124 1 1
32123 124124 1 1
12333 112424 1 1
12333 123131 1 0
12333 214135 1 0
12333 123145 1 0
My expected output is in the following format
Zip Pro #acc
32123 A 3
B 2
12333 A 4
B 1
What might be the best way to get to this?
I have tried using pd.crosstab/groupby functions but max got to this
g.groupby(['ZIP','A','B']).agg({'ACC':'count'})
c.set_index(['ZIP','A','B'])
Zip A B acc
32123 0 0 1
12333 0 0 2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,您可以
.groupby
“Zip” 并对这些值求和以获得所需的数字:然后,
pd.melt
使用“Zip”作为 id 并提取值来获取数据来自两者将“A”和“B”(现在是上一步的总和)放入新数据框中:如果需要,您还可以使用“Zip”和“Pro”作为索引列:
First, you can
.groupby
"Zip" and sum those values to get the number you want:Then,
pd.melt
the data by using "Zip" as id and extracting the values from both "A" and "B" (now the sum from your previous step) to place in your new dataframe:You can also use both "Zip" and "Pro" as index columns if you want: