У меня есть два pandas
кадра данных, a
и b
:
a1 a2 a3 a4 a5 a6 a7
1 3 4 5 3 4 5
0 2 0 3 0 2 1
2 5 6 5 2 1 2
а также
b1 b2 b3 b4 b5 b6 b7
3 5 4 5 1 4 3
0 1 2 3 0 0 2
2 2 1 5 2 6 5
Два фрейма данных содержат абсолютно одинаковые данные, но в другом порядке и с разными именами столбцов. Основываясь на числах в двух фреймах данных, я хотел бы иметь возможность сопоставлять каждое имя столбца a
с каждым именем столбца в b
.
Это не так просто, как простое сравнение первой строки a
с первой строкой, b
поскольку есть дублированные значения, например, оба a4
и a7
имеют значение, 5
поэтому невозможно сразу сопоставить их с одним b2
или с b4
.
Каков наилучший способ сделать это?
python
python-3.x
pandas
OD1995
источник
источник
[*df1.index]
части, пожалуйста? Буду благодарен вам, ура.sort_values(by=..)
принимает список в качестве параметра, поэтому я распаковываю индекс в список здесь, вы также можете сделать этоlist(df1.index)
вместо[*df1.index]
:)Вот один из способов использовать NumPy
broadcasting
:Еще один похожий подход (@piR):
источник
Один из способов
merge
источник
словарь пониманий
Использовать
tuple
значения столбца в качестве хешируемого ключа в словареНа тот случай, если у нас нет идеального представления, я создал словарь только для столбцов, где есть совпадение.
idxmax
Это граничит с абсурдом ... На самом деле не делай этого.
источник