2017-08-09 188 views
0

我有一個熊貓DF:熊貓撤併刪除重複的行

df = pd.DataFrame({'id':[1,1,2,2,3], 
        'type':['a','b','c','d','e'], 
        'value':[100,200,300,400,500]}) 

print(df) 

id value type 
1 100 a 
1 200 b 
2 300 c 
2 400 d 
3 500 e 

我'合併相同的數據框來獲取

df2 = pd.merge(df, df,on=['id']) 

print(df2) 

id type_x value_x type_y value_y 
1 a  100  a 100 
1 a  100  b 200 
1 b  200  a 100 
1 b  200  b 200 
2 c  300  c 300 
2 c  300  d 400 
2 d  400  c 300 
2 d  400  d 400 
3 e  500  e 500 

組合,但我不想與value_x = value_y

如:

id type_x value_x type_y value_y 
1 a  100  a 100 

我可以合併

df2 = df2[df2.value_x != df2.value_y] 

後選擇列,但我不想做這樣,

是否有任何其他的方式,通過在合併本身我可以刪除這些?

我的最終輸出(需要):

id type_x value_x type_y value_y 
1 a  100  b  200 
1 b  200  a  100 
2 c  300  d  400 
2 d  400  c  300 
+0

你是從頭開始構建數據幀或者這只是一個例子,你必須與現有框架的工作? –

+0

@JonClements這只是一個例子,我有一個類似的數據框有更多的列。 – Shubham

回答

1

你可以做到這一切在一個聲明中,但是,它仍然是很像你在幹什麼,使用query

df2 = pd.merge(df, df,on=['id']).query('value_x != value_y') 

輸出:

id type_x value_x type_y value_y 
1 1  a  100  b  200 
2 1  b  200  a  100 
5 2  c  300  d  400 
6 2  d  400  c  300