如何删除具有特定计数条件的列
how to delete columns with a certain count condition
我正在尝试删除 id
,它不包含一个月中的所有 3 个月。
例如,我们将 df
设为:
id month
100 1
100 2
100 3
101 2
102 3
然后我想要新的 df 就像 id
100 一样:
id month
100 1
100 2
100 3
所以我所做的是
df.groupby(['id'].month.count() == 3
这给了我
id month
100 True
101 False
102 False
我目前不知道如何继续。
您可以在与 3
:
比较后对布尔输出使用 groupby
+transform('nunique')
和切片
df[df.groupby('id')['month'].transform('nunique').eq(3)]
输出:
id month
0 100 1
1 100 2
2 100 3
注意。如果您确定没有重复的月份,transform('count')
也可以
我认为你很接近,但你需要稍微修改一下你的代码。使用您的代码,但将 count
与 nunique
交换,这将 return 一个 series
显示您的 ID True
或 False
取决于他们是否拥有所有个月。然后,您可以筛选:
t = (df.groupby(['id']).month.nunique() == 3)
print(df.loc[df.id.isin(t[t].index)])
id month
0 100 1
1 100 2
2 100 3
我正在尝试删除 id
,它不包含一个月中的所有 3 个月。
例如,我们将 df
设为:
id month
100 1
100 2
100 3
101 2
102 3
然后我想要新的 df 就像 id
100 一样:
id month
100 1
100 2
100 3
所以我所做的是
df.groupby(['id'].month.count() == 3
这给了我
id month
100 True
101 False
102 False
我目前不知道如何继续。
您可以在与 3
:
groupby
+transform('nunique')
和切片
df[df.groupby('id')['month'].transform('nunique').eq(3)]
输出:
id month
0 100 1
1 100 2
2 100 3
注意。如果您确定没有重复的月份,transform('count')
也可以
我认为你很接近,但你需要稍微修改一下你的代码。使用您的代码,但将 count
与 nunique
交换,这将 return 一个 series
显示您的 ID True
或 False
取决于他们是否拥有所有个月。然后,您可以筛选:
t = (df.groupby(['id']).month.nunique() == 3)
print(df.loc[df.id.isin(t[t].index)])
id month
0 100 1
1 100 2
2 100 3