Python 将一个数据帧的两列与另一个数据帧的一列进行比较,如果匹配,则打印该行
我将两个csv文件读入2个数据帧: df1: df2 列表=[“NTP”、“LOS”] 如果列Aend或Bend与df2中的节点名称匹配,我想检查df1中的行1。如果是,则从df2中选择相应的行,并检查条件 `如果df2[报警]包含列表中的任何值: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添加一个新列 对于第一部分,您可以构造范围内值的列表并
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')