Я новичок в pandas, и я пытаюсь сопоставить несколько столбцов, а не только один. This page показывает мне, как это сделать с pd.Series
, но я не могу разобраться, как сопоставить несколько columns
.картирование dataframes not series pandas
Вот мои два DataFrames
Я стараюсь map
.
data2=pd.DataFrame(np.random.randn(5,2),index=range(0,5),columns=['x','y'])
data2['Cluster']=['A','B','A','B','C']
centers2=pd.DataFrame(np.random.randint(0,10,size=(3,2)),index= ['A','B','C'],columns=['x','y'])
Здесь data2
выглядит следующим образом:
data2
x y Cluster
0 0.151212 -0.168855 A
1 -0.078935 1.933378 B
2 -0.388903 0.444610 A
3 0.622089 1.609730 B
4 -0.346856 1.095834 C
и centers2
выглядит следующим образом:
centers2
x y
A 6 4
B 6 0
C 4 1
Я хотел бы создать два отдельных столбцов в data2
, с соответствующим center2
соответствия. Вот моя попытка ручной
data2['Centers.x']=[6,6,6,6,4]
data2['Centers.y']=[4,0,4,0,1]
data2
x y Cluster Centers.x Centers.y
0 0.151212 -0.168855 A 6 4
1 -0.078935 1.933378 B 6 0
2 -0.388903 0.444610 A 6 4
3 0.622089 1.609730 B 6 0
4 -0.346856 1.095834 C 4 1
Как я могу сделать это с помощью функции map
? (Я знаю, как это сделать с помощью петель, мне нужно векторизованное решение.)
Да, это проще всего, но сортировка меняется. – jezrael
Правильно, добавлено '.sort_index()', чтобы убедиться, что он отсортирован. – Stefan
Хотел бы - где это? – Stefan