Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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从df2查找并替换df1值_Python_Pandas - Fatal编程技术网

Python从df2查找并替换df1值

Python从df2查找并替换df1值,python,pandas,Python,Pandas,我有两个数据帧 dfdf2 dfcolumnFOUR与df2columnLOOKUP COL 我需要将dfcolumnFOUR与df2columnLOOKUP COL匹配,并将dfcolumnFOUR替换为df2column中的相应值返回此 生成的数据帧可以覆盖df,但我将其列为result 注意:索引在每个数据帧上都不匹配 df = pd.DataFrame([['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'],

我有两个数据帧

df
df2

df
column
FOUR
df2
column
LOOKUP COL

我需要将
df
column
FOUR
df2
column
LOOKUP COL
匹配,并将
df
column
FOUR
替换为
df2
column
中的相应值返回此

生成的数据帧可以覆盖
df
,但我将其列为
result

注意:索引在每个数据帧上都不匹配

df = pd.DataFrame([['a', 'b', 'c', 'd'], 
              ['e', 'f', 'g', 'h'],
              ['j', 'k', 'l', 'm'],
              ['x', 'y', 'z', 'w']])

df.columns = ['ONE', 'TWO', 'THREE', 'FOUR']

      ONE  TWO THREE FOUR
   0    a   b   c   d
   1    e   f   g   h
   2    j   k   l   m
   3    x   y   z   w 

df2 = pd.DataFrame([['a', 'b', 'd', '1'], 
              ['e', 'f', 'h', '2'],
              ['j', 'k', 'm', '3'],
              ['x', 'y', 'w', '4']])

df2.columns = ['X1', 'Y2', 'LOOKUP COL', 'RETURN THIS']

    X1  Y2  LOOKUP COL  RETURN THIS
 0  a   b      d              1
 1  e   f      h              2
 2  j   k      m              3
 3  x   y      w              4
结果DF

   ONE  TWO THREE  FOUR
0   a   b     c     1
1   e   f     g     2
2   j   k     l     3
3   x   y     z     4
应该足够做这个把戏吗?可能有一种更为自然的方式来做这件事

基本上,列表理解-我们在遍历df['Four']列表中的
i时,使用查找列生成一个新的
df2['returnthis']
值数组

应该足够做这个把戏吗?可能有一种更为自然的方式来做这件事


基本上,列表理解-我们在遍历df['Four']
列表中的
i时,使用查找列生成一个新的
df2['RETURN THIS']
值数组。

您可以使用Series.map。您需要创建一个字典或一个系列以在地图中使用。一个系列在这里更有意义,但索引应该是
LOOKUP COL

df['FOUR'] = df['FOUR'].map(df2.set_index('LOOKUP COL')['RETURN THIS'])

df
Out: 
  ONE TWO THREE FOUR
0   a   b     c    1
1   e   f     g    2
2   j   k     l    3
3   x   y     z    4

您可以使用Series.map。您需要创建一个字典或一个系列以在地图中使用。一个系列在这里更有意义,但索引应该是
LOOKUP COL

df['FOUR'] = df['FOUR'].map(df2.set_index('LOOKUP COL')['RETURN THIS'])

df
Out: 
  ONE TWO THREE FOUR
0   a   b     c    1
1   e   f     g    2
2   j   k     l    3
3   x   y     z    4

请不要张贴图片。(见)更新了。。。不知道此规则请不要发布图像。(见)更新了。。。我不知道这条规则