我有两个class A {
@JsonProperty
int some = 1;
@JsonUnwrapped
B anotherObject = new B();
}
class B {
@JsonProperty
int someB = 2;
}
,
df
我试图查看df1
id group
1 0001
2 0001
3 0001
4 0002
5 0002
6 0003
df2
group name
0001 one
0002 one
0003 two
中的name
是否包含one
,并在df2
中找到相应的group
;然后在这方面合并df1
和df1
;
df2
我想知道有没有更好的方法,更有效的方法。
答案 0 :(得分:2)
如果只需要merge
一列,则使用map
更快:
a = df2['name'].str.contains(pat=r'(?i)one', regex=True)
valid_groups = df2[a].copy()
df = df1[df1['group'].isin(valid_groups['group'])].copy()
df['name'] = df['group'].map(valid_groups.set_index('group')['name'])
print (df)
id group name
0 1 0001 one
1 2 0001 one
2 3 0001 one
3 4 0002 one
4 5 0002 one
答案 1 :(得分:1)
您可以使用:
df2.merge(df1,on='group').loc[lambda x: x.name=='one']
#df2.merge(df1,on='group').loc[lambda x: x.name.str.contains(pat=r'(?i)one', regex=True)]
或者:
df2.merge(df1,on='group').query("name=='one'")