我有两个 Dataframe 如下。
df1 = pd.DataFrame({'PATH':[r'C:\FODLER\Test1.jpg',
r'C:\A\FODLER\Test2.jpg',
r'C:\A\FODLER\Test3.jpg',
r'C:\A\FODLER\Test4.jpg'],
'VALUE':[45,23,45,2]})
df2 = pd.DataFrame({'F_NAME': [r'FODLER\Test1.jpg',
r'FODLER\Test2.jpg',
r'FODLER\Test6.jpg',
r'FODLER\Test3.jpg',
r'FODLER\Test4.jpg',
r'FODLER\Test9.jpg'],
'VALUE_X': ['12', '25', '97', '33', '123', '0'],
'CORDS': ['1', '2', '3', '4', '5', '6']})
我想连接df2,其中PATH.Contains(F_NAME)到df1表。因此得到的 Dataframe 如下:
df3 = pd.DataFrame({'PATH':[r'C:\FODLER\Test1.jpg',
r'C:\A\FODLER\Test2.jpg',
r'C:\A\FODLER\Test3.jpg',
r'C:\A\FODLER\Test4.jpg'],
'F_NAME': [r'FODLER\Test1.jpg',
r'FODLER\Test2.jpg',
r'FODLER\Test3.jpg',
r'FODLER\Test4.jpg'],
'VALUE_X': ['12', '25', '33', '123'],
'CORDS': ['1', '2', '4', '5'],
'VALUE':[45,23,45,2]})
我如何编写pandas merge语句来完成这种连接?
2条答案
按热度按时间jdgnovmf1#
您可以使用
merge
和正则表达式usingstr.extract
来提取路径的行尾锚定部分:输出:
pattern
:regex demo
或者,如果
PATH
只有2个组件(folder\filename.ext
),您可以在合并之前为列分配路径的尾部:regex demo
xxls0lw82#
你能试试这个吗: