【发布时间】:2018-01-27 05:08:13
【问题描述】:
场景: 继上一个关于如何将 excel 文件从服务读取到数据框 (How to read an excel file directly from a Server with Python) 的问题之后,我正在尝试合并多个数据框的上下文(其中包含excel 工作表中的数据)。
问题:即使在 SO 中搜索了类似的问题,我仍然无法解决问题。
数据格式(每张表读入一个数据框):
Sheet 1 (db1)
Name CUSIP Date Price
A XXX 01/01/2001 100
B AAA 02/05/2005 90
C ZZZ 03/07/2006 95
Sheet2 (db2)
Ident CUSIP Value Class
123 XXX 0.5 AA
444 AAA 1.3 AB
555 ZZZ 2,8 AC
想要的输出(fnl):
Name CUSIP Date Price Ident Value Class
A XXX 01/01/2001 100 123 0.5 AA
B AAA 02/05/2005 90 444 1.3 AB
C ZZZ 03/07/2006 95 555 2.8 AC
我已经尝试过的:我正在尝试使用合并函数来匹配每个数据帧,但在“如何”部分出现错误。
fnl = db1
fnl = fnl.merge(db2, how='outer', on=['CUSIP'])
fnl = fnl.merge(db3, how='outer', on=['CUSIP'])
fnl = fnl.merge(bte, how='outer', on=['CUSIP'])
我也尝试了连接,但我只得到一个数据帧列表,而不是单个输出。
wsframes = [db1 ,db2, db3]
fnl = pd.concat(wsframes, axis=1)
问题:进行此操作的正确方法是什么?
【问题讨论】:
-
你遇到了什么错误?
-
KeyError: 'CUSIP' 用于合并过程。对于 concat,我得到了数据框列表,但我无法将它们放在一起进行操作。
-
您的错误表明“CUSIP”作为列不可见。写
db1['CUSIP']或db2['CUSIP']时你会得到什么? -
其实同样的错误。这可能是由于数据与标题被一个空行隔开吗?
-
db2.columns.tolist()和db2.index.tolist()怎么样