Объединить два кадра данных на основе частичного начала с совпадениемPython

Программы на Python
Ответить
Anonymous
 Объединить два кадра данных на основе частичного начала с совпадением

Сообщение Anonymous »

У меня есть два фрейма данных, которые я хочу объединить на основе частичного совпадения начала с (строки в df2.B, которые начинаются с df1.A в приведенном ниже примере, и значения этих столбцов являются строками, которые могут иметь любую длину).
Я могу сделать это следующим образом, но это очень медленно для моих реальных фреймов данных, каждый из которых имеет миллионы строк.
df1 = pd.DataFrame({'A': ['a', 'b', 'cc']})

df2 = pd.DataFrame({'B': ['ar', 'd', 'ar'],
'C': ['x1', 'x1', 'x2']})

df_m = pd.DataFrame(columns=['A','B','C'])
for index, row in df1.iterrows():
df_ = df2[df2['B'].str.startswith(row['A'])]
if not df_.empty:
df_['A'] = row['A']
df_m = df_m.append(df_)

df_m:
A B C
0 a ar x1
2 a ar x2


Подробнее здесь: https://stackoverflow.com/questions/625 ... with-match
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»