熊猫数据框减法

时间:2018-07-10 15:10:27

标签: python pandas dataframe set

给出两个数据帧df1df2,每个数据帧都有唯一的ID ID,如何获取df2中的元素 not df1中?

现在,我的解决方案是:

  1. df2-df1 = pd.concat([df2, df1, df1]).drop_duplicates(subset = 'ID', keep=False)

  2. df1-df2 = pd.concat([df2, df2, df1]).drop_duplicates(subset = 'ID', keep=False)

但是,我的结果与预期相反,即RHS(1。)= LHS(2。),反之亦然。

参考1,我的逻辑是df1中的记录被删除,因为df1被两次包含。在df2中与ID中的记录匹配的df1中的记录也被 剔除。因此,剩下的记录就是df2中的记录,它们ID中的记录共享df1;换句话说,剩下的唯一记录是在 {strong> df2中独有的记录。

指针将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

这应该可以解决您的目的

@Entity
@Table(name = "indisponible_segment")
public class IndisponibleSegment {

private Lane _lane;
private int _id;
private Input _input;

@ManyToOne(fetch=FetchType.EAGER)
@Cascade(value={org.hibernate.annotations.CascadeType.ALL})
@JoinColumn(name="input_id")
public Input getInput() {
  return _input;
}

public void setInput(Input inInput) {
  this._input = inInput;
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id")
public int getId() {
  return _id;
}

public void setId(int inId) {
  this._id = inId;
}

@Enumerated(EnumType.STRING)
@Column(name = "lane", nullable = false)
public Lane getLane() {
  return _lane;
}

public void setLane(Lane inLane) {
  this._lane = inLane;
}

}