У меня есть фрейм данных df
с 3 столбцами: name
, salary
и position
.
Я пытаюсь создать новый фрейм данных, содержащий все возможные комбинации любых двух строк, которые я частично получил, используя:
from itertools import combinations
import pandas as pd
cc = list(combinations(df.index,2)
df2 = pd.DataFrame([df.loc[c,['name','salary','position']] for c in cc], index=cc)
Я хотел бы, чтобы этот код создавал новый фрейм данных (df2
) с шестью столбцами name1
, name2
, salary1
, salary2
, position1
и position2
. Каждый столбец будет включать данные соответствующей строки - например, name1
будет содержать значение в name
для первой из двух объединяемых строк, а name2
будет содержать значение в name
для второй из две строки.
В настоящее время код создает три столбца (name
, salary
и position
), объединяя вместе строки из исходного фрейма данных. Например, значение name
первой строки - «JohnSmithJaneDoe». Поскольку все записи имеют разную длину, я не могу просто разделить их на два новых столбца.
EDIT:
Мои данные:
name = ['Barnes', 'Davies', 'Fernandes', 'Freeman', 'Gomes', 'Gray', 'Henderson', 'James', 'Jota', 'Kelly', 'Long', 'McCarthy', 'Pereira', 'Ward', 'Smith']
salary = [51, 48, 52, 69, 46, 83, 123, 78, 71, 63, 61, 48, 65, 49, 62]
position = ['0', '1', '1', '1', '1', '2', '2', '2', '2', '2', '3', '0', '3', '1', '3']
pd.DataFrame({'name':name,'salary':salary,'position':position})