bugfix> pandas > 投稿

重複を残して、あるデータフレームを別のデータフレームに追加するにはどうすればよいですか。ここでのツイストは、どの重複が明確ではないことです。

重複する名前は同じでなければならず、ゲームは最初のdfではcar_v1であり、2番目のdfではcar_version_2でなければなりません。

df1 name    age    game     col_d
0   Jane    7      car_v1   foo
1   Jamie   6      car_v1   bar
2   Kevin   9      car_v1   bar
df2 name    age    game            col_d
0   Dave    1      train game      foo
1   Kevin   9      plane game      bar
2   Jill    6      plane game      bar
3   Chris   3      car_version_2   foo
4   Kevin   9      car_version_2   bar

マージ/追加後、df2は次のようになります。

df2 name    age    game            col_d
0   Dave    1      train game      foo
1   Kevin   9      plane game      bar
2   Jill    6      plane game      bar
3   Chris   3      car_version_2   foo
4   Kevin   9      car_version_2   bar
5   Jane    7      car_v1          foo
6   Jamie   6      car_v1          bar

彼は新しいバージョンを持っているので、それは最初のdfからケビンの古いゲームを除外します。 df1にはcar_v1のみが含まれていることに注意してください。

回答 1 件
  • だから私は問題を解決しましたが、おそらくあまり効率的ではありません。おそらく誰かがより良い代替手段を作ることができますが、その間に、これは私がやったことです:

    #make a filtered DF with only the v2 completions in it
    filteredDF = df2.loc[df2["game"] == "car_version_2"] 
    #put the names of the filteredDF in a list
    myList = filteredDF['name'].tolist()
    #if a person already has a v2 game, then delete their v1 game as irrelevant
    df1.ix[df1.name.isin(myList), "game"] = "delete"
    #and delete it.
    df1 = df1[df1.game != "delete"] 
    #and then append it
    df2 = df2.append(df1)
    
    

あなたの答え