Один из подходов заключается в следующем,
Создайте пустой фрейм данных и добавьте соответствующие значения столбцов в соответствии с вашей логикой
Объединить созданный информационный кадр с исходным информационным.
Я попытался использовать данные вашего примера, и вот оно:
import pandas as pd
dat = pd.read_excel(<location_to_file>) # Reading excel in to pandas
dat = pd.DataFrame(dat) # Converting to a pandas dataframe
dat1 = pd.DataFrame([])
for n in range(dat.shape[0]):
for m in range(dat.shape[0]):
if dat['Col1'][n] == dat['Col2'][m]:
dat1 = dat1.append(pd.DataFrame({'Column5': dat.iloc[m][2], 'Column6': dat.iloc[m][3]}, index=[0]), ignore_index=True)
# print(dat1)
df = pd.concat([dat, dat1], axis=1)
print(df)
Ввод (как кадр данных):
Col1 Col2 Col3 Col4
0 ABC DEF 12 DGMN
1 PQR MNO 17 DGSD
2 DEF JPG United DGFS
3 JPG PQR 21Hi DFPR
4 SQL STF STM DGBC
5 PQR YZW Hello90 DGSF
6 MNO ABC DQT DGCV
7 STF SQL A18B DGFD
Промежуточный / временный кадр данных:
Column5 Column6
0 DQT DGCV
1 21Hi DFPR
2 12 DGMN
3 United DGFS
4 A18B DGFD
5 21Hi DFPR
6 17 DGSD
7 STM DGBC
Выход (ДФ):
Col1 Col2 Col3 Col4 Column5 Column6
0 ABC DEF 12 DGMN DQT DGCV
1 PQR MNO 17 DGSD 21Hi DFPR
2 DEF JPG United DGFS 12 DGMN
3 JPG PQR 21Hi DFPR United DGFS
4 SQL STF STM DGBC A18B DGFD
5 PQR YZW Hello90 DGSF 21Hi DFPR
6 MNO ABC DQT DGCV 17 DGSD
7 STF SQL A18B DGFD STM DGBC
Хотя этот фрагмент можно еще улучшить для повышения производительности за счет векторизации операций. Надеюсь, это поможет вам начать.
Примечание
Пожалуйста, покажите свои исследования в решении / решении проблемы, которую вы публикуете. Это побудит членов SO помочь вам.