Трудно описать это в заголовке, но с учетом этих двух фреймов данных:
import pandas as pd
import numpy as np
import re
df1 = pd.DataFrame({
'url': [
'http://google.com/car',
'http://google.com/moto',
'http://google.com/moto-bike'
], 'value': [3, 4, 6]})
url value
http://google.com/car 3
http://google.com/moto 4
http://google.com/moto-bike 6
df2 = pd.DataFrame({'name': ['car','moto','bus']})
name
0 car
1 moto
2 bus
Я хочу увидеть, сколько раз имя на df2
появляется на url
для df1
и вроде как справились с:
df2['instances'] = pd.Series([df1.url.str.contains(fr'\D{w}\D', regex=True) \
.sum() for w in df2.name.tolist()])
По какой-то причине автомобиль имеет нулевые экземпляры, потому что есть только один.
name instances
0 car 0
1 moto 2
2 bus 0
То, что я хотел бы сделать, это сделать есть еще один столбец, который суммирует столбец value
всех совпадений df1
, поэтому он выглядит следующим образом:
name instances value_total
0 car 1 3
1 moto 2 10
2 bus 0 0
Любая помощь в правильном направлении будет принята с благодарностью, спасибо!