簡體   English   中英

過濾數據庫 groupby 輸出而不將其存儲在變量中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM