给出两个数据帧df1
和df2
,每个数据帧都有唯一的ID ID
,如何获取df2
中的元素 not 在df1
中?
现在,我的解决方案是:
df2-df1 = pd.concat([df2, df1, df1]).drop_duplicates(subset = 'ID', keep=False)
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
中独有的记录。
指针将不胜感激。谢谢!
答案 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;
}
}