2017-11-17 191 views
1

基於下面的數據框(1),我希望創建一個數據框(2),其中y或z等於2.是否有方法可以方便地執行此操作?根據兩個條件選擇python數據框中的行

如果我要創建一個僅包含dataframe(1)但不包含dataframe(2)的行的數據框(3),我該如何處理它?

id x y z 
    0 324 1 2 
    1 213 1 1 
    2 529 2 1 
    3 347 3 2 
    4 109 2 2 

...

+0

如果你的問題得到回答,不要忘了[上投票,並接受一個答案(https://開頭stackoverflow.com/help/someone-answers)。謝謝。 –

回答

1

您可以輕鬆創建df2足夠使用條件:

df2 = df1[df1.y.eq(2) | df1.z.eq(2)] 

df2 
     x y z 
id   
0 324 1 2 
2 529 2 1 
3 347 3 2 
4 109 2 2 

鑑於df2df1,你可以對指數進行組差異操作,如此:

df3 = df1.iloc[df1.index.difference(df2.index)] 

df3 
     x y z 
id   
1 213 1 1 
0

你可以做到以下幾點:

import pandas as pd 

df = pd.read_csv('data.csv') 
df2 = df[(df.y == 2) | (df.z == 2)] 

print(df2) 

結果:

id x y z 
0 0 324 1 2 
2 2 529 2 1 
3 3 347 3 2 
4 4 109 2 2 
+0

請在發佈之前閱讀已有的答案,我已經在我的答案中介紹了這一點。 https://stackoverflow.com/a/47360167/4909087 –

+0

我沒有看到你的答案,因爲我正在寫我的。我可以將其刪除 – sera

+0

如果它是偶然的,這不是問題。只需在發佈之前檢查:-)如果我們在1-2分鐘之內發帖,但是我們之間的差距差不多是8分鐘。 –

2
df[df[['y','z']].eq(2).any(1)] 
Out[1205]: 
    id x y z 
0 0 324 1 2 
2 2 529 2 1 
3 3 347 3 2 
4 4 109 2 2 
+0

不錯,這會推廣到多列。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ謝謝:-) – Wen

+0

謝謝!這種方法很有意義,但是我得到一個錯誤,說「['y','z']不是標籤或索引」。你知道如何解決這個問題嗎? – csha

相關問題