[英]Filter a database groupby output without storing it in a variable
我在 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 值。
刪除Y
周圍的引號:
>>> data.groupby('col1')['col2'].value_counts().unstack(level=1).query("Y.isna()")
col2 N Y
col1
3 4.0 NaN
>>>
或與True
:
>>> x = data.groupby('col1')['col2'].value_counts().unstack(level=1)
>>> x[x[True].isna()]
col2 False True
col1
3 4.0 NaN
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.