替换两个dataframe之间的单个单元格值



我有两个数据帧

df1 =

<表类> 名称 代码 tbody><<tr>1234567H74

试试这些-

使用pd.DataFrame.where

  1. ~df2['name'].isin(df1['name'])检查df2中存在但df1中不存在的名称
  2. pd.where保持当前code值不变,如果上面为真,否则为假,它拾取df1['Code']
  3. 现在可以用来替换df1['Code']列。

读文档。

idx = ~df2['name'].isin(df1['name'])
df2['Code'] = df2['Code'].where(idx,df1['Code'],axis=0)
name Code
0  1234567  H74
1  1234321  J12
使用pd.DataFrame.join

  1. 您可以将name列设置为df1和df2的索引,并在df2上连接(左)。
  2. 接下来,您可以使用ffill(axis=1)将df2代码值填充到nan(其中df1不存在)
  3. 最后,您可以获取Code列,这实际上是df1的代码列,其中填充了df2代码值,它是nan。
  4. 重置索引以获得所需的内容。
  5. 记得保存在一个变量中!

读文档。

df2.set_index('name').join(df1.set_index('name'), lsuffix='_')
.ffill(1)['Code']
.reset_index()
name Code
0  1234567  H74
1  1234321  J12
使用pd.DataFrame.update

这是一个简单的就地操作。所以要小心!

阅读文档。

df2.update(df1)
df2
name Code
0  1234567.0  H74
1  1234321.0  J12

使用pd.concatdrop_duplicates:

>>> pd.concat([df1, df2]).drop_duplicates('name')
name Code
0  1234567  H74
1  1234321  J12

这可以通过设置'name'列作为索引并使用update函数来完成。

import pandas as pd
df1 = pd.DataFrame({'Name':'Ashutosh', 'Code':'AP', 'Number':'1234567', 'ID':'H74'}, index=[1]).set_index('Name')
df2 = pd.DataFrame({'Name':'Ashutosh', 'Code':'JN', 'Number':'1234567', 'ID':'J11', 'Alternate':'1234321', 'SID':'J12'}, index=[1]).set_index('Name')

所以我的数据框架看起来像这样:

>>> df1
Code  Number  ID
Name            
Ashutosh    AP  1234567 H74
>>> df2

Code  Number  ID  Alternate SID
Name                    
Ashutosh    JN  1234567 J11 1234321   J12

使用update函数:

>>> df2['Code'].update(df1['Code'])
>>> df2

Code  Number  ID  Alternate   SID
Name                    
Ashutosh    AP  1234567 J11 1234321     J12

相关内容

  • 没有找到相关文章

最新更新