как сохранить правильный порядок строк pandas
Код:
import pandas as pd
df1 = pd.DataFrame({ 'Name' : ['LingS', 'DoammB', 'VoammE', 'CommI'],
'ID' : ['DOAM4', 'LOAM4', 'COAM2', 'VOAM1']})
df2 = pd.DataFrame({ 'ID' : ['DOAM4', 'LOAM4', 'COAM2', 'VOAM1']})
df3 = pd.merge(df1, df2, on='ID', sort=False)
Есть два датафрейма, нужно сделать что-то типа VLOOKUP функции, только на пайтоне. В результате я хочу получить:
| Names | IDs |
|---|---|
| DoammB | DOAM4 |
| LingS | LOAM4 |
| CommI | COAM2 |
| VoammE | VOAM1 |
Проблема в том, что пандас не сохраняет порядок значений и изменяет его на алфавитный. Я думал, что все будет работать когда я добавлю sort=False, но никаких изминений не произошло. Может кто-то знает способы получше?
Ответы (2 шт):
Автор решения: gfd2
→ Ссылка
Мой костыльный ответ, который не совсем подходит к таблице автора. Но возможно чем то поможет :)
import pandas as pd
df1 = pd.DataFrame({ 'Name': ['LingS', 'DoammB', 'VoammE', 'CommI']})
df2 = pd.DataFrame({ 'ID': ['DOAM4', 'LOAM4', 'COAM2', 'VOAM1']})
df1.sort_values(by=['Name'], inplace=True)
df2.sort_values(by=['ID'], inplace=True)
df3 = pd.concat([df1['Name'].reset_index(drop=True),
df2['ID'].reset_index(drop=True)], axis=1)
print(df3)
Ответ будет таким:
Name ID
0 CommI COAM2
1 DoammB DOAM4
2 LingS LOAM4
3 VoammE VOAM1