【问题标题】:I need to merge 2 dataframes with Pandas and add a filter我需要将 2 个数据框与 Pandas 合并并添加一个过滤器
【发布时间】:2019-10-11 11:13:51
【问题描述】:

我需要将 2 个数据框与 Pandas 合并。我正在使用 Jupyter 笔记本。 我可以合并,但不能过滤数据(如 SQL 上的 WHERE 语句)。 数据帧具有相同的消息,被标注者标记为 0 或 1。 数据框有 3 列具有相同的值 - Idtimestampmessage 和 2 列 high, low 具有不同的标签值(1 或 0) 我在“Id”列上进行了合并

我想看看例如:

对于同一个语句,是否有任何时候 Df1 具有值 == 1 的“高”列,而 Df2 具有值 == 1 的“低”列?反之亦然?

df1.merge(df2, on = ['Id'], how = 'inner')

现在我需要过滤,但我找不到正确的语法...

(df1[(df1["high_df1"] == 1)]) & (df2[(df2["low_df2"] == 1)])

我可以用单独的语句来形象化答案:

df1.loc[(df1['high_df1'] == 1) & (df2['low_df2'] == 1)]
df2.loc[(df2['low_df2'] == 1) & (df1['high_df1'] == 1)]

但我想在一张表中查看结果。

谁能帮帮我?

【问题讨论】:

标签: python pandas dataframe merge


【解决方案1】:

据我了解:

df1 = df1.merge(df2, on = ['Id'], how='left')

df1.where((df1['high_df1'] == 1) & (df1['low_df2'] == 1))

【讨论】:

    【解决方案2】:

    对于同一语句,是否有任何时候 Df1 具有值 == 1 的“高”列,而 Df2 具有值 == 1 的“低”列?反之亦然?

    另一种解决方案是应用适当的query()

    df1.merge(df2, on=['Id'], how='inner').query('high_df1==1&low_df2==1|low_df1==1&high_df2==1')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-23
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 2015-10-14
      • 2020-05-06
      • 2021-12-14
      相关资源
      最近更新 更多