Спасибо, что нашли время для этого. Задавать хорошие вопросы очень важно, и теперь, когда вы задали согласованный вопрос, я смог довольно быстро найти простое решение:
import pandas as pd
df1 = pd.DataFrame({'TITLE': ['The Matrix','Die Hard','Kill Bill'],
'VENDOR ID': ['1234','4321','4132'],
'GENRE(S)': ['Action', 'Adventure', 'Drama']})
df2 = pd.DataFrame({'TITLE': ['Toy Story','Shrek','Frozen'],
'Genre': ['Animation', 'Adventure', 'Family'],
'VENDOR ID': ['5678','8765','8576']})
Простой способ:
Мы будем используйте .append()
ниже, но для этого нам нужны столбцы в df1
и df2
для соответствия. В этом случае мы просто заменим df2's
'Genre'
на 'GENRE(S)'
df2.columns = ['TITLE', 'GENRE(S)', 'VENDOR ID']
df3 = df1.append(df2)
print(df3)
GENRE(S) TITLE VENDOR ID
0 Action The Matrix 1234
1 Adventure Die Hard 4321
2 Drama Kill Bill 4132
0 Animation Toy Story 5678
1 Adventure Shrek 8765
2 Family Frozen 8576
Более подробно:
Теперь, для одного варианта использования это работает, но есть могут быть случаи, когда у вас много несовпадающих столбцов и / или вам приходится делать это повторно. Вот решение, использующее логическое индексирование для поиска несовпадающих имен, затем zip()
и .rename()
для сопоставления имен столбцов:
# RELOAD YOUR ORIGINAL DF'S
df1_find = df1.columns[~df1.columns.isin(df2.columns)] # select col name that isnt in df2
df2_find = df2.columns[~df2.columns.isin(df1.columns)] # select col name that isnt in df1
zipped = dict(zip(df2_find, df1_find)) # df2_find as key, df1_find as value
df2.rename(columns=zipped, inplace=True) # map zipped dict to the column names
df3 = df1.append(df2)
print(df3)
GENRE(S) TITLE VENDOR ID
0 Action The Matrix 1234
1 Adventure Die Hard 4321
2 Drama Kill Bill 4132
0 Animation Toy Story 5678
1 Adventure Shrek 8765
2 Family Frozen 8576
Имейте в виду:
- таким образом при этом предполагается, что оба ваших df имеют одинаковое количество столбцов
- это ТАКЖЕ предполагает, что
df1
имеет ваши идеальные имена столбцов, которые вы будете использовать против других df
s, чтобы исправить их имена столбцов
Надеюсь, это поможет.