Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将一个数据帧的两列与另一个数据帧的一列进行比较,如果匹配,则打印该行_Python_Pandas_Dataframe - Fatal编程技术网

Python 将一个数据帧的两列与另一个数据帧的一列进行比较,如果匹配,则打印该行

Python 将一个数据帧的两列与另一个数据帧的一列进行比较,如果匹配,则打印该行,python,pandas,dataframe,Python,Pandas,Dataframe,我将两个csv文件读入2个数据帧: df1: df2 列表=[“NTP”、“LOS”] 如果列Aend或Bend与df2中的节点名称匹配,我想检查df1中的行1。如果是,则从df2中选择相应的行,并检查条件 `如果df2[报警]包含列表中的任何值: print "YES" 其他: 类似地检查第2行。 做这件事的最佳方法是什么。您似乎有两个问题要解决: 根据df1中匹配的node\u name筛选df2 根据报警是否在输入列表中,向df2添加一个新列 对于第一部分,您可以构造范围内值的列表并

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

df1:

df2

列表=[“NTP”、“LOS”]

如果列Aend或Bend与df2中的节点名称匹配,我想检查df1中的行1。如果是,则从df2中选择相应的行,并检查条件

`如果df2[报警]包含列表中的任何值

  print "YES"
其他:

类似地检查第2行。
做这件事的最佳方法是什么。

您似乎有两个问题要解决:

  • 根据
    df1
    中匹配的
    node\u name
    筛选
    df2
  • 根据
    报警
    是否在输入列表中,向
    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')
    

    非常感谢。我已经更新了我的问题。如果您需要任何进一步的详细信息,请让我知道列表中包含了我想要检查的几个字符串。如果在Alarm中找到这些字符串,我想在新列中添加Yes或在该列中添加No。
      print "NO"
    
    # combine A_end and B_end values
    vals = df1.values.ravel()
    
    # filter df2
    df2 = df2[df2['node_name'].isin(vals)]
    
    import numpy as np
    
    L = ['NTP', 'LOS']
    
    df2['NewCol'] = np.where(df2['Alarm'].isin(L), 'Yes', 'No')