Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用不同表中的另一列替换dataframe中的值_Python_Pandas - Fatal编程技术网

Python 用不同表中的另一列替换dataframe中的值

Python 用不同表中的另一列替换dataframe中的值,python,pandas,Python,Pandas,我有以下数据集: player_ref first_name 1 a 2 b 3 c 和另一个具有两列的数据集 uid shortname 1 d 2 e 3 f 我想替换player\u ref==uid中的值。我要的是短名,而不是名。它看起来是这样的: player_ref first_name 1 d 2 e 3 f

我有以下数据集:

player_ref first_name 
1          a
2          b
3          c
和另一个具有两列的数据集

uid shortname

1          d
2          e
3          f
我想替换
player\u ref==uid
中的值。我要的是短名,而不是名。它看起来是这样的:

player_ref first_name 
1          d
2          e
3          f
做这件事最简单的方法是什么?

你可以试试(如果玩家\u ref==uid):

或者如果玩家_ref!=uid(带示例):

或使用地图:

df_player.first_name = df_player.player_ref.map(dict(e for e in zip(df_uid.uid, df_uid.shortname)))

假设您的
player\u ref
是数据帧索引,您可以在数据帧上使用a、a和a:

将熊猫作为pd导入
d1=pd.DataFrame({
'名字':['a','b','c','d']
},索引=[1,2,3,4])
d2=pd.DataFrame({
'短名':['e','f','g','h']
},索引=[4,2,1,3])
结果=d1.join(d2,how='inner').drop('first_name',axis=1)。重命名({'shortname':'first_name',axis=1)

有很多方法可以做到这一点。我现在找不到一个傻瓜,但我建议在谷歌上呆上一两分钟;pKey用于搜索、替换、映射、合并的单词不是OP想要的那么OP必须选择一个更好的示例,恰好uid和player_ref是identical@rafaelc现在呢?如果uid!=player_-ref,所以不是OP想要的可能是内部连接(
d=d1.join(d2,how='inner').drop('first_-name',axis=1)。重命名({'shortname':'first_-name'},axis=1)
)会起作用吗?不,你可以试试我的例子或任何其他例子:)在我这么做之前:
tmp=player_-df['player_-ref'].isin(idsd-df['uid'])
所以player\u ref中的值在uid中,我只想用uid 1替换player\u ref 1的名字和player的短名。我已经更新了我的答案,它似乎完成了这项工作。有什么问题吗?:)
df_player = pd.DataFrame({'player_ref': [1, 2 ,3, 4], 'first_name': ['a', 'b', 'c', 'd']})

df_uid = pd.DataFrame({'uid': [4, 2, 1, 3], 'shortname': ['e','f','g', 'h']})

df_player.first_name = [df_uid[df_uid.uid == p].shortname.values[0] for p in df_player.player_ref]

df_player
df_player.first_name = df_player.player_ref.map(dict(e for e in zip(df_uid.uid, df_uid.shortname)))