【发布时间】:2021-12-01 14:25:45
【问题描述】:
我在 col1 中有一个带有 Person ID 的数据,它可以重复暗示同一个人的另一行。 col2 表示对于某些参数,该行(实例)是 Y 还是 N。
示例:
col1 col2
1 Y
1 Y
1 N
1 Y
1 N
2 Y
2 N
2 N
3 N
3 N
3 N
3 N
有一百万这样的行。
我需要得到那些只有 'N' 和他们的 'N' 计数的人的过滤输出。
所以我做了这样的事情:
data.groupby('col1')['col2'].value_counts().unstack(level=1)
这让我得到以下信息:
col1 Y N
1 3 2
2 1 2
3 NaN 4
但我只需要第三行。
我尝试使用以下方法应用过滤器,但它们不起作用。
data.groupby('col1')['col2'].value_counts().unstack(level=1)['Y'.isna()]
data.groupby('col1')['col2'].value_counts().unstack(level=1).query("'Y'.isna()")
我知道如果不以data['Y'] 格式在其前面添加数据变量,我无法直接引用“Y”列。但我不希望将此 groupby 结果保存在新变量中。
我们有什么方法可以过滤输出而不将其保存到变量中?
例如:
data.groupby('col1')['col2'].value_counts().unstack(level=1)['Y'].isna().sum()
这会给我一些案例。但是,我也需要 col1 值。
【问题讨论】:
标签: python python-3.x pandas dataframe filter