Объединить панды DataFrame и вернуть общие значения с именем столбца - PullRequest
0 голосов
/ 31 марта 2019

Давайте рассмотрим два разных кадра данных панд df1 и df2 , описанных ниже. Это упражнение состоит в сравнении всех столбцов строка за строкой и возвращении значения, которое является общим для обоих кадров данных, а также имени столбца.

Давайте приведем пример для лучшего понимания. Допустим, следующие кадры данных:

df1 = pd.DataFrame([[23,12,44],[34,55,33]], columns = ['A', 'B', 'C'])
df2 = pd.DataFrame([[11,12,43],[10,51,34]], columns = ['D', 'E', 'F'])

Результат операции должен быть:

   col   value
0   E    12
1   F    34

Можно ли сделать это эффективно?

1 Ответ

3 голосов
/ 31 марта 2019

Мы можем использовать pd.melt, чтобы получить столбцы в строки, и после этого сделать inner merge:

df1_melt = df1.melt(value_vars=df1.columns, var_name='Cols')
df2_melt = df2.melt(value_vars=df2.columns, var_name='Cols')

df_final = pd.merge(df2_melt, df1_melt, on='value', suffixes=['', '_1']).drop('Cols_1', axis=1)

print(df_final)
  Cols  value
0    E     12
1    F     34

Редактировать: промежуточные плавленые столы выглядят так:

print(df1_melt, '\n')
print(df2_melt)

  Cols  value
0    A     23
1    A     34
2    B     12
3    B     55
4    C     44
5    C     33 

  Cols  value
0    D     11
1    D     10
2    E     12
3    E     51
4    F     43
5    F     34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...