首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从excel-2中的值中更新excel-1中缺少的值

使用Python从excel-2中的值中更新excel-1中缺少的值
EN

Stack Overflow用户
提问于 2019-07-31 09:38:06
回答 1查看 40关注 0票数 0

我有两个Excel表格,其中有顺序编号的列表和购买日期。表-1是主表,工作表-2可以称为主表的子集.

并非单-1中的所有序列号都随购买日期而更新.在表-2中,有那些序列号,其购买价值的日期在表-1中缺失。单-2是完全更新它的序列号和购买价值的日期。

我试图从表格-1中读取所有序列号,搜索工作表-2中的序列号,找到相应的购买日期,并在表-1中更新此值(无论何时丢失)。

以下是这两张纸的版面:(请注意,这两张纸的列名有点不同)

表-1

代码语言:javascript
复制
Serial#   Date of purchase
111       01-Jun-2018
222       13-Jan-2018
333       (Blank)
444       (Blank)
555       11-Dec-2017

表-2

代码语言:javascript
复制
Serial Number   purchase date
333             03-Feb-2019
444             19-Feb-2019

我是Pandas的新手,我第一次尝试用Pandas制作Python脚本来实现这一点。下面是我编写的代码,但它不起作用。

代码语言:javascript
复制
import xlrd
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile

df1 = pd.read_excel('Excel-1.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('Excel-2.xlsx', sheet_name='Sheet1')

df1['Date of purchase'] = df1['Serial#'].map(df2.set_index('Serial Number')['purchase date'])

误差

pandas.core.indexes.base.InvalidIndexError:仅对唯一值索引对象进行有效索引

编辑:

  • 这两张纸都有数百个条目,我提到的布局只是一个示例。
  • 这两张纸都有其他的列,除了样本布局中列出的2列之外,我们还感兴趣的是所提到的2列。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-31 10:06:56

假设您的输入数据是:

代码语言:javascript
复制
In [1]: import pandas as pd

In [2]: sheet1=pd.DataFrame([[111,'01-Jun-2018'],[222,'13-Jan-2018'],[333],[444],[555,'11-Dec-2017']], columns=['Serial#','Date of purchase'])

In [3]: sheet1
Out[3]: 
   Serial# Date of purchase
0      111      01-Jun-2018
1      222      13-Jan-2018
2      333             None
3      444             None
4      555      11-Dec-2017

In [4]: sheet2=pd.DataFrame([[333,'03-Feb-2019'],[444,'19-Feb-2019']],columns=sheet1.columns)

In [5]: sheet2
Out[5]: 
   Serial# Date of purchase
0      333      03-Feb-2019
1      444      19-Feb-2019

您可以通过标引进行数据处理,并使用填充物方法:

代码语言:javascript
复制
In [6]: sheet1.set_index('Serial#')

In [7]: sheet1['Date of purchase'].fillna(sheet2.set_index('Serial#')['Date of purchase'], inplace=True)

In [8]:

Out[8]: 
        Date of purchase
Serial#                 
111          01-Jun-2018
222          13-Jan-2018
333          03-Feb-2019
444          19-Feb-2019
555          11-Dec-2017
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57287708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档