【问题标题】:Check values in dataframe against another dataframe and append values if present根据另一个数据帧检查数据帧中的值并附加值(如果存在)
【发布时间】:2017-10-15 19:59:03
【问题描述】:

我有两个数据框如下:

DF1
A   B   C
1   2   3
4   5   6
7   8   9

DF2
Match   Values
1       a,d
7       b,c

我想将 DF1['A'] 与 DF2['Match'] 匹配,如果值存在,则将 DF2['Values'] 附加到 DF1

So my result will be:
A    B    C    Values
1    2    3    a,d
7    8    9    b,c

现在我可以使用以下代码来匹配这些值,但它返回的是一个空数据框。

df1 = df1[df1['A'].isin(df2['Match'])]

任何帮助将不胜感激。

【问题讨论】:

  • 您能否进行编辑以使您的数据框结构更清晰?
  • 你试过pd.merge()吗?

标签: python pandas


【解决方案1】:

您可以通过合并数据框一步完成此操作,而不是进行查找:

pd.merge(df1, df2, how='inner', left_on='A', right_on='Match')

如果您只想要出现在两者中的记录,请指定 how='inner',如果您想要 df1 的所有数据,请指定 how='left'

如果您只想保留 Values 列:

pd.merge(df1, df2.set_index('Match')['Values'].to_frame(), how='inner', left_on='A', right_index=True)

【讨论】:

  • 谢谢!这行得通,但是如果我的 DF2 有多个列,但我只想保留另一列,我该怎么做?
  • @Mohnish - 您是否希望同时保留 Match 和 Values 列?
  • 不,假设 DF@ 有 'Match'、'Values'、'Data' 列,但我只想保留 'Values'
  • 见上面的编辑。如果这回答了您的问题,请接受作为答案!谢谢。
  • 它显示大数据帧的内存错误(每个 df 2M 行)
猜你喜欢
  • 2021-08-18
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 2021-01-26
  • 2021-01-11
  • 1970-01-01
相关资源
最近更新 更多