我有一个具有以下结构的数据框:
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列,否则应插入新行并再次排序。
这样做是否有效的方式或预定义功能?
答案 0 :(得分:4)
我认为你需要:
concat
DataFrame
一起drop_duplicates
用于删除列0
sort_values
列0
reset_index
获取唯一索引值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)
您需要的是append和drop duplicates
df = df1.append(df2)
df = df.drop_duplicates('0', keep='last').sort_values('0', ascending= False)
但根据this Jezrael的答案是快速而有效的矿井只是另一种选择!