изменить значения столбца в одном df, чтобы соответствовать значениям столбца в другом df? - PullRequest
0 голосов
/ 25 января 2019

У меня есть 2 кадра данных, которые я хочу объединить на основе столбца name.Столбец имени в одном df имеет сокращенные версии, а столбец имени в другом df - полное имя.Каков наиболее эффективный способ изменить имена столбцов, чтобы они соответствовали друг другу?

df1[names] = ["Man Utd", "Man City", "Chelsea", "Liverpool", "Spurs", "Arsenal"]
df2[names] = ["Manchester United", "Manchester City", "Chelsea FC", "Liverpool FC", "Tottenham Hotspurs", "Arsenal FC"]

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Вы можете создать словарь, как показано ниже, используя dict(zip())

df1['names']  = ["Man Utd", "Man City", "Chelsea", "Liverpool", "Spurs", "Arsenal"]

df2['names']  = ["Manchester United", "Manchester City", "Chelsea FC", "Liverpool FC", "Tottenham Hotspurs", "Arsenal FC"]
d=dict(zip(df1['names'],df2['names'])) #created a mapping dictionary
print(d)

{'Man Utd': 'Manchester United',
'Man City': 'Manchester City',
 'Chelsea': 'Chelsea FC',
 'Liverpool': 'Liverpool FC',
 'Spurs': 'Tottenham Hotspurs',
 'Arsenal': 'Arsenal FC'}

Затем измените df1[names] на

df1[names]=df1[names].map(d)

Опубликовать это вы можете выполнить слияниетеперь имена столбцов совпадают.

0 голосов
/ 26 января 2019

Создание словаря с последующей подачей в pd.Series.map - это один из способов.Но, придерживаясь Панд, вы также можете использовать pd.Series.replace напрямую:

lst1 = ["Man Utd", "Man City", "Chelsea", "Liverpool", "Spurs", "Arsenal"]
lst2 = ["Manchester United", "Manchester City", "Chelsea FC", "Liverpool FC",
        "Tottenham Hotspurs", "Arsenal FC"]

# define input dictionary
df = pd.DataFrame({'names': lst1})    

# replace values in lst1 by lst2, by index
df['names'] = df['names'].replace(lst1, lst2)

print(df)

                names
0   Manchester United
1     Manchester City
2          Chelsea FC
3        Liverpool FC
4  Tottenham Hotspurs
5          Arsenal FC
0 голосов
/ 25 января 2019

Единственный способ добиться этого - сохранить референтный порядок, соответствующий столбцам с двумя именами

df1 = pd.DataFrame()

referential = {
    "Man Utd": "Manchester United",
    "Man City": "Manchester City",
    "Chelsea": "Chelsea FC",
    "Liverpool": "Liverpool FC",
    "Spurs": "Tottenham Hotspurs",
    "Arsenal": "Arsenal FC"
}

df1['names'] = ["Man Utd", "Man City", "Chelsea", "Liverpool", "Spurs", "Arsenal"]
df1['names'] = df1['names'].map(referential)
print(df1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...