Python 通过字符串前缀连接数据帧
我正在寻找一种在两个pandas.DataFrames上执行以下连接的有效方法: 第一个在Python 通过字符串前缀连接数据帧,python,pandas,join,string-matching,Python,Pandas,Join,String Matching,我正在寻找一种在两个pandas.DataFrames上执行以下连接的有效方法: 第一个在A列中包含如下字符串: A .... Spam|One Spam|Two Ham Eggs 第二个是以字符串键作为索引和文本描述的参考表: index description Spam "..." Ham "..." Eggs "...." BakedBeans "...." 索引中的每个键都可以是a中字符串的前缀。现在我想将description列
A列中包含如下字符串:
A ....
Spam|One
Spam|Two
Ham
Eggs
第二个是以字符串键作为索引和文本描述的参考表:
index description
Spam "..."
Ham "..."
Eggs "...."
BakedBeans "...."
索引中的每个键都可以是a
中字符串的前缀。现在我想将description列连接到列A,其中A中的值与前缀匹配。我有一种感觉,有一个有效的熊猫一班轮为它
我们可以假设A
中的所有值的格式都是“prefix | suffix”或“prefix”。也许这可以加快速度。与列表的“选择第一个值”和“按系列”
一起使用:
print (df1)
A
0 Spam|One
1 Spam|Two
2 Ham
3 Eggs
print (df2)
description
Spam aaa
Ham sd
Eggs rty
print (df2.index)
Index(['Spam', 'Ham', 'Eggs'], dtype='object')
df1['description'] = df1['A'].str.split('|').str[0].map(df2['description'])
print (df1)
A description
0 Spam|One aaa
1 Spam|Two aaa
2 Ham sd
3 Eggs rty
更一般的解决方案应该是,对于提取起始字符串使用^
,对于正则表达式使用|
或通过df2使用连接:
pat = '(' + '|'.join('^' + df2.index) + ')'
df1['new'] = df1['A'].str.extract(pat,expand=False).map(df2['description'])