2016-02-16 80 views
0

我在一個小項目使用Python熊貓和我被困在下列問題工作的Python熊貓選擇組唯一值和第二列B的值可能爲零。現在我想按照它們在列A中的值對DataFrame中的所有行進行分組,然後只保留或「選擇」包含B列中的一個或多個零的組。其中特定列包含零

例如從一個數據幀,看起來像這樣:

Column A Column B 
-------- -------- 
b   12 
c   56 
f   0 
b   456 
b   334 
f   10 

我只是在所有行(組),其中列A = F感興趣:

Column A Column B 
-------- -------- 
f   0 
f   10 

我知道我怎麼能實現這個使用循環和迭代組,但我正在尋找一個簡單和合理的快速代碼,因爲我使用的數據框可以變得非常巨大。

我目前的做法是這樣的:

df.groupby("A").filter(lambda x: 0 in x["B"].values) 

很顯然,我是新來的Python熊貓,我希望能對你有所幫助!

預先感謝您!

+0

怎麼樣使用'query','df.query( 「columnA == 'F'」)。查詢( 「columnB> = 0」)' – titipata

+0

@titipat謝謝您的答覆。在你的解決方案中,我必須知道列A中所有可能的值,然後以循環的方式迭代它們,對吧? –

+0

是的,沒錯。如果你想迭代,'groupby'可能比我的解決方案更好。 – titipata

回答

1

一種方法是獲取A列中B列爲零的所有值,然後將其組合在此過濾集上。

groups = df[df['Column B'] == 0]['Column A'].unique() 
>>> df[df['Column A'].isin(groups)] 
    Column A Column B 
2  f   0 
5  f  10