高效的解决方案插入或更新行熊猫

时间:2018-01-12 12:37:43

标签: python pandas

我有一个具有以下结构的数据框:

              0               1   2
 0   0.00086076    500.00000000  []
 1   0.00086075    819.00000000  []
 2   0.00086072   1162.00000000  []
 3   0.00086071     20.00000000  []
 4   0.00086069  10170.00000000  []
 5   0.00086067     18.00000000  []

然后我有另一个包含更新值的数据框:

              0               1   2
 0   0.00086071     50.00000000  []
 1   0.00086068     81.00000000  []

它在第0列排序,我需要将两者合并如下:

              0               1   2
 0   0.00086076    500.00000000  []
 1   0.00086075    819.00000000  []
 2   0.00086072   1162.00000000  []
 3   0.00086071     50.00000000  []
 4   0.00086069  10170.00000000  []
 5   0.00086068     81.00000000  []
 6   0.00086067     18.00000000  []

因此,如果值与第0列中的值匹配,则应更新第1列,否则应插入新行并再次排序。

这样做是否有效的方式或预定义功能?

2 个答案:

答案 0 :(得分:4)

我认为你需要:

df = (pd.concat([df1, df2])
        .drop_duplicates([0] , keep='last')
        .sort_values(0 , ascending=False)
        .reset_index(drop=True))
print (df)
          0        1   2
0  0.000861    500.0  []
1  0.000861    819.0  []
2  0.000861   1162.0  []
3  0.000861     50.0  []
4  0.000861  10170.0  []
5  0.000861     81.0  []
6  0.000861     18.0  []

答案 1 :(得分:-1)

您需要的是appenddrop duplicates

df = df1.append(df2)
df = df.drop_duplicates('0', keep='last').sort_values('0', ascending= False)

但根据this Jezrael的答案是快速而有效的矿井只是另一种选择!