Python groupby后跟counts作为pandas中的新列

Python groupby后跟counts作为pandas中的新列,python,pandas,Python,Pandas,我希望对帐户ID执行groupby,然后在groupby之后执行值计数,并将它们的计数作为一个新列给出。 我怎样才能在熊猫身上做到这一点 例如: 输出必须是: Account Id Open Closed 1 2 0 2 1 1 3 0 1 使用groupby和value\u count

我希望对帐户ID执行groupby,然后在groupby之后执行值计数,并将它们的计数作为一个新列给出。 我怎样才能在熊猫身上做到这一点

例如:

输出必须是:

Account Id    Open    Closed
1                      2             0
2                      1             1
3                      0             1

使用
groupby
value\u counts
获取所需的初始计数。然后取消堆叠多重索引以获得数据帧,并将空值设置为0以获得最终结果:

import pandas as pd

# Defining DataFrame
df = pd.DataFrame(index=range(5))
df['Account Id'] = [1, 2, 1, 3, 2]
df['Values'] = ['Open', 'Closed', 'Open', 'Closed', 'Open']

grouped = df.groupby('Account Id')['Values'].value_counts()
# Remove the multiindex present
grouped = grouped.unstack()
# Set null values to 0
result = grouped.where(pd.notnull(grouped), 0)
结果输出:

        Closed  Open
Account Id      
1           0   2
2           1   1
3           1   0

(抱歉,我不确定如何正确表示数据帧)

这也将返回groupby对象的数据帧:

grouped_df = df.groupby(["Account Id","Values"])
grouped_df.size().reset_index(name = "Count")

对于最初示例的格式很抱歉,我从mobile发布了问题。我做了类似的操作,但希望将其作为数据帧,以便与其他现有数据帧合并。结果应为数据帧。中间“分组”是一个多索引系列。取消堆栈通过使其成为单个索引将其更改为数据帧。(很抱歉,我现在无法在手机上正确格式化。)重置索引()帮助!参考资料:你能澄清一下它到底有什么帮助吗,我有点困惑!我的代码的输出应该正好是您请求的数据帧。
grouped_df = df.groupby(["Account Id","Values"])
grouped_df.size().reset_index(name = "Count")