我有两个具有相同标题的数据帧
df1\
**Date prix moyen mini maxi H-Value C-Value**
0 17/09/20 8 6 9 122 2110122\
1 15/09/20 8 6 9 122 2110122\
2 10/09/20 8 6 9 122 2110122
和
df2
**Date prix moyen mini maxi H-Value C-Value**\
1 07/09/17 1.80 1.50 2.00 170 3360170\
1 17/09/20 8.00 6.00 9.00 122 2110122\
2 17/09/20 9.00 8.00 12.00 122 2150122\
3 17/09/20 10.00 8.00 12.00 122 14210122
我想单独比较两个数据框的 3 个参数(日期、H 值和 C 值),确定 df2 中存在的新值(df1 中未出现的值),然后将它们附加到 df1 中。>
我正在使用
df_unique = df2[~(df2['Date'].isin(df1['Date']) & df2['H-Value'].isin(df1['H-Value']) & df2['C-Value'].isin(df1['C-Value']) )].dropna().reset_index(drop=True)
并且它无法识别 df2 中的新值。生成的表仅标识某些值,而不标识其他值。
我哪里出错了?
答案 0 :(得分:1)
你有什么问题?
In [4]: df2[~(df2['Date'].isin(df1['Date']) & df2['H-Value'].isin(df1['H-Value']
...: ) & df2['C-Value'].isin(df1['C-Value']) )].dropna().reset_index(drop=Tru
...: e)
Out[4]:
Date prix moyen mini maxi H-Value C-Value
0 1 07/09/17 1.8 1.5 2.0 170 3360170
1 2 17/09/20 9.0 8.0 12.0 122 2150122
2 3 17/09/20 10.0 8.0 12.0 122 14210122
这些是 df2 中不存在于 df1 中的所有行。我觉得不错...
答案 1 :(得分:1)
我实际上能够解决问题。问题不在于用于比较两个数据集的命令,而在于 df2 中一列的数据格式与 df1 中的同一列不同,因此无法进行直接比较。
答案 2 :(得分:0)
这是我的尝试
df1 = pd.concat([df1, df2[~df2.set_index(['Date', 'H-Value', 'C-Value']).index.isin(df1.set_index(['Date', 'H-Value', 'C-Value']).index)]])