比较两个数据框的列并根据条件过滤数据框

时间:2018-11-18 22:42:41

标签: python pandas dataframe

两个数据帧如图所示

Name Score John 0.27 Peter 0.34 David 0.89 Sarah 0.67 Tom 0.93

Name minScore John 0.50 Peter 0.20 David 0.90 Sarah 0.50 Tom 0.90

我想将第一个数据帧的列(Score)与第二个数据帧的列(minScore)进行比较,并获得过滤后的第一个数据帧 df = dataframe1['score']>dataframe2['minscore']

最终输出如图所示

Name Score Peter 0.34 Sarah 0.67 Tom 0.93

谢谢。

2 个答案:

答案 0 :(得分:0)

您需要在字段 Name

上加入数据框
df = dataframe1.merge(dataframe2, on='Name')

并过滤结果:

df[df.Score > df.minScore]

答案 1 :(得分:0)

您可以创建一个以Name索引的序列,并使用map来构建布尔条件。如果您想保证自己没有视野,我也明确建议您copy

min_map = df2.set_index('Name')['minScore']
df = df1.loc[df1['Score'] > df1['Name'].map(min_map)].copy()