我需要将2个数据框与Pandas合并并添加一个过滤器

时间:2019-10-11 11:13:51

标签: python pandas dataframe merge

我需要将2个数据框与熊猫合并。我正在使用Jupyter Notebook。 我可以合并,但不能过滤数据(如SQL上的WHERE语句)。 数据帧具有相等的消息,这些消息被标记程序标记为0或1。 数据帧具有3列相等的值-Idtimestampmessage和2列high, low,具有不同的标签值(1或0) 我在“ Id”列上进行了合并

例如,我试图查看

是否有相同的陈述,Df1的列“ high”的值为== 1,Df2的列“ low”的值为== 1?或反之亦然?

df1.merge(df2, on = ['Id'], how = 'inner')

现在我需要过滤,但是我找不到正确的语法...

(df1[(df1["high_df1"] == 1)]) & (df2[(df2["low_df2"] == 1)])

我可以用单独的陈述来可视化答案:

df1.loc[(df1['high_df1'] == 1) & (df2['low_df2'] == 1)]
df2.loc[(df2['low_df2'] == 1) & (df1['high_df1'] == 1)]

但是我希望在一张表中看到结果。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

据我了解:

df1 = df1.merge(df2, on = ['Id'], how='left')

df1.where((df1['high_df1'] == 1) & (df1['low_df2'] == 1))

答案 1 :(得分:0)

  

是否有相同的陈述,Df1的列“ high”的值为== 1,Df2的列“ low”的值为== 1?或反之亦然?

另一种解决方案是应用适当的query()

@Entity
public class User
{
    @Id
    private String loginId;
    private String screenName;
    @ManyToMany(mappedBy = "user")
    private Set<Avatar> avatars;
}

@Entity
public class Avatar
{
    @Id
    private Integer id;
    @ManyToMany
    @JoinTable(
        name = "user",
        joinColumns = @JoinColumn(name = "id"),
        inverseJoinColumns = @JoinColumn(name = "loginId"))
    private User user;
    private String url;
}