我有两个Excel表格,其中有顺序编号的列表和购买日期。表-1是主表,工作表-2可以称为主表的子集.
并非单-1中的所有序列号都随购买日期而更新.在表-2中,有那些序列号,其购买价值的日期在表-1中缺失。单-2是完全更新它的序列号和购买价值的日期。
我试图从表格-1中读取所有序列号,搜索工作表-2中的序列号,找到相应的购买日期,并在表-1中更新此值(无论何时丢失)。
以下是这两张纸的版面:(请注意,这两张纸的列名有点不同)
表-1
Serial# Date of purchase
111 01-Jun-2018
222 13-Jan-2018
333 (Blank)
444 (Blank)
555 11-Dec-2017表-2
Serial Number purchase date
333 03-Feb-2019
444 19-Feb-2019我是Pandas的新手,我第一次尝试用Pandas制作Python脚本来实现这一点。下面是我编写的代码,但它不起作用。
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:仅对唯一值索引对象进行有效索引
编辑:
发布于 2019-07-31 10:06:56
假设您的输入数据是:
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-2019In [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-2017https://stackoverflow.com/questions/57287708
复制相似问题