我想连接两个 Dataframe ,得到如下结果。我尝试了很多方法,但都失败了。我只想要df2 ['A']上的文本,其中包含df1 ['A']上的文本。我需要在代码中更改什么?我希望:第一个
b5buobof1#
创建一个中间 Dataframe 和map:
map
d = (df2.assign(key=df2['A'].str.extract(r'([^_]+)')) .set_index('key'))df1['A'].map(d['A'])
d = (df2.assign(key=df2['A'].str.extract(r'([^_]+)'))
.set_index('key'))
df1['A'].map(d['A'])
输出量:
0 A0_link01 A1_link12 A2_link23 A3_link3Name: A, dtype: object
0 A0_link0
1 A1_link1
2 A2_link2
3 A3_link3
Name: A, dtype: object
如果需要df2(df1.merge(d, left_on='A', right_index=True))中的多个列,则为merge
df1.merge(d, left_on='A', right_index=True)
merge
sgtfey8w2#
可以将列上的索引设置为An和pd.concat第一个
An
pd.concat
u0njafvf3#
df2.A.loc[df2.A.str.split('_',expand=True).iloc[:,0].isin(df1.A)]0 A0_link01 A1_link12 A2_link23 A3_link3
df2.A.loc[df2.A.str.split('_',expand=True).iloc[:,0].isin(df1.A)]
3条答案
按热度按时间b5buobof1#
创建一个中间 Dataframe 和
map
:输出量:
如果需要df2(
df1.merge(d, left_on='A', right_index=True)
)中的多个列,则为merge
sgtfey8w2#
可以将列上的索引设置为
An
和pd.concat
第一个
u0njafvf3#