【问题标题】:Compare two columns of a dataframe against 1 column of another dataframe and if matches print the row将数据帧的两列与另一个数据帧的一列进行比较,如果匹配则打印该行
【发布时间】:2018-08-08 08:21:53
【问题描述】:

我有两个 csv 文件读入 2 个数据帧:

df1:

 Aend   Bend

  A      B

  C      D

df2

 node_name Alarm

   A        alarm1

   D        alarm2

列表 =["NTP", "LOS"]

如果列 Aend 或 Bend 与 df2 中的 node_name 匹配,我想检查 df1 中的 row1。如果是,则从 df2 中获取相应的行,并且必须检查条件

`如果 df2[Alarm] 包含 List 中的任何值:

  print "YES"

其他:

  print "NO"

类似地检查 row2 。 最好的方法是什么。

【问题讨论】:

  • 谢谢。我已经更新了我的问题。如果您需要更多详细信息,请告诉我
  • 列表包含一些我想检查的字符串。如果在警报中找到这些字符串,我想在新列中添加 Yes 或在该列中添加 No。

标签: python pandas dataframe


【解决方案1】:

您试图解决的似乎有 2 个问题:

  1. 根据df1中的匹配node_name过滤df2
  2. 根据Alarm 是否在输入列表中,向df2 添加新列。

对于第一部分,您可以构建范围内值的列表并使用pd.Series.isin

# combine A_end and B_end values
vals = df1.values.ravel()

# filter df2
df2 = df2[df2['node_name'].isin(vals)]

对于第二部分,您可以使用numpy.where 根据条件创建一个新系列:

import numpy as np

L = ['NTP', 'LOS']

df2['NewCol'] = np.where(df2['Alarm'].isin(L), 'Yes', 'No')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多