将DataFrame列与其他DataFrame映射

时间:2019-06-24 21:27:27

标签: python-3.x pandas dataframe dictionary object

我有一个CSV文件,其中包含从2010年初到2018年的玩家历史排名。排名每周刷新一次,因此一个文件中包含54 x 8排名。有诸如日期,排名,玩家ID和积分之类的列。玩家ID是每个玩家的特定编号。我还有第二个csv,其中包含玩家ID,玩家名称,玩家姓氏。我想用第二个csv映射第一个数据帧中的玩家ID和玩家的名字和姓氏。

我刚刚使用<to_dict创建了第二个csv的字典,我试图用<.map(dict1)><from_dict>来映射它,但是没有成功。

data_players = pd.read_csv(filepath, engine="python", sep=";", 
keep_default_na=False)
data_rank = pd.read_csv(filepath2, engine="python", sep=",", 
keep_default_na=False)

data_players = data_players.set_index('player_id')
dict1 = data_players.to_dict('index')
data_rank['player'] = pd.DataFrame.from_dict(dict1)

我的数据看起来像这样

ranking_date     int64
rank             int64
points          object
player          object
dtype: object

        ranking_date  rank points                      player
player
103819      20100104     1  10550    {'name_list': 'Federer'}
104745      20100104     2   9205      {'name_list': 'Nadal'}
104925      20100104     3   8310   {'name_list': 'Djokovic'}
104918      20100104     4   7030     {'name_list': 'Murray'}
105223      20100104     5   6785  {'name_list': 'Del Potro'}

我希望为此找到解决方案,我认为这很简单,但是我只是在学习python。

1 个答案:

答案 0 :(得分:0)

不使用字典,请在此处使用

Df= data_players.merge(data_rank,left_on=“player_id”, right_on=“player_id”)