我有两个数据帧:
df1: contains all information
rowname a b c d
R1 1 2 0 1
R2 2 2 0 1
R3 0 2 0 0
R4 1 2 0 1
df2: contains a subset of the rows and columns:
rowname a b c
R1 1 2 0
R2 2 2 0
R4 1 2 0
我想过滤掉df2
以外的所有行df1
。所以对于这种情况,我希望在保留所有列的同时摆脱df1
中的R3。
我认为使用df1.merge(df2, ...)
可以帮助实现这一目标,但是我尝试过各种各样的争论并没有成功。我使用的是python3。
答案 0 :(得分:1)
Simpy使用isin()
df1[df1.rowname.isin(df2.rowname)]
rowname a b c d
0 R1 1 2 0 1
1 R2 2 2 0 1
3 R4 1 2 0 1
答案 1 :(得分:0)
这是一种方式,仅匹配列[
{ "$group": {
"_id": 0,
"origin": {
"$addToSet": {
"$cond": [
{ "$in": ["$ownerId", userIds] },
"$$ROOT", null
]
}
}
} },
{ "$project": {
"origin": {
"$filter": {
"input": "$origin",
"as": "el",
"cond": { "$ne": ["$$el", null] }
}
}
} }
]
。
['a', 'b', 'c']
结果:
df = pd.concat([df1, df2])
df = df.loc[df.duplicated(['a', 'b', 'c'], keep=False)]\
.dropna(subset=['d'], axis=0)
df['d'] = df['d'].astype(int)