【问题标题】:Compare two dataframes and add new values in second dataframe to the first data-frame比较两个数据帧并将第二个数据帧中的新值添加到第一个数据帧
【发布时间】:2021-03-30 22:58:40
【问题描述】:

我有两个具有相同标题的数据帧

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 中的新值。结果表只标识了一些值,而没有标识其他值。

我哪里错了?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案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 中的所有行。我觉得不错……

    【讨论】:

    • 我刚刚添加了一小部分值。 df2 中有 173 行,df1 中有 23,627 行。很抱歉没有早点澄清
    【解决方案2】:

    我实际上能够解决问题。问题不在于用于比较两个数据集的命令,而在于 df2 中的一列与 df1 中的同一列的数据格式不同,导致无法直接比较。

    【讨论】:

      【解决方案3】:

      这就是我尝试的方法

      df1 = pd.concat([df1, df2[~df2.set_index(['Date', 'H-Value', 'C-Value']).index.isin(df1.set_index(['Date', 'H-Value', 'C-Value']).index)]])
      

      【讨论】:

        猜你喜欢
        • 2019-06-23
        • 1970-01-01
        • 2021-04-26
        • 2021-03-19
        • 1970-01-01
        • 2021-03-10
        • 1970-01-01
        • 1970-01-01
        • 2020-06-22
        相关资源
        最近更新 更多