多列上的熊猫 groupby
Posted
技术标签:
【中文标题】多列上的熊猫 groupby【英文标题】:pandas groupby on multiple columns 【发布时间】:2018-05-15 00:41:59 【问题描述】:我有一个包含状态代码及其状态的数据集。
code status
1 AZ a
2 CA b
3 KS c
4 MO c
5 NY d
6 AZ d
7 MO a
8 MO b
9 MN b
10 NV a
11 NV e
12 MO f
13 NY a
14 NY a
15 NY b
我想过滤掉这个代码只包含a
状态的数据集,并计算它们有多少。示例输出将是,
code status
1 AZ a
2 MO a
3 NY a
AZ =1 MO = 1 NY =2
我使用了df.groupyby("code").loc[df.status == 'a']
,但没有任何运气。
任何帮助表示赞赏!
【问题讨论】:
您也可以按多列进行分组,即使它没有明确说明您使用df.groupby(['code','status']).count()
要求的内容
【参考方案1】:
让我们先过滤数据框为 a,然后是 groupby 和 count。
df[df.status == 'a'].groupby('code').size()
输出:
code
AZ 1
MO 1
NV 1
NY 2
dtype: int64
【讨论】:
我也想有多个值,所以我尝试了df[df.status == 'a' or df.status == 'b'].groupby('code').size()
,但我有 keyerror。你知道我为什么会收到 keyerror 吗?
df[df['status'].isin(['a','b'])].groupby('code').size()
或者如你所愿:df[(df['status'] == 'a') | (df['status'] == 'b')].groupby('code').size()
【参考方案2】:
我已经重新创建了你的数据集
data = [["AZ","CA", "KS","MO","NY","AZ","MO","MO","MN","NV","NV","MO","NY","NY" ,"NY"],
["a","b","c","c","d","d","a","b","b","a","e","f","a","a","b"]]
df = pd.DataFrame(data)
df = df.T
df.columns = ["code","status" ]
df[df["status"] == "a"].groupby(["code", "status"]).size()
给予
code status
AZ a 1
MO a 1
NV a 1
NY a 2
dtype: int64
【讨论】:
以上是关于多列上的熊猫 groupby的主要内容,如果未能解决你的问题,请参考以下文章