Pandas中concat连接多个DataFrame

本文介绍了如何使用pandas的`concat`和`append`方法来组合DataFrame。示例展示了如何通过行和列连接DataFrame,并利用`keys`参数创建多层索引,以及设置`join`参数进行内连接操作。此外,还提到了`copy()`函数用于创建DataFrame的浅拷贝。
摘要由CSDN通过智能技术生成
import pandas
# 读取stocks_2016和stocks_2017两个数据集,用Symbol作为行索引名
stocks_2016 = pd.read_csv('data/stocks_2016.csv', index_col='Symbol')
stocks_2017 = pd.read_csv('data/stocks_2017.csv', index_col='Symbol')
stocks_2016
 SharesLowHigh
Symbol   
AAPL8095110
TSLA5080130
WMT405570
stocks_2017
 SharesLowHigh
Symbol   
AAPL50120140
GE1003040
IBM877595
SLB205585
TXN5001523
TSLA100100300

将两个DataFrame放到一个列表中,用pandas的concat方法将它们连接起来 

s_list = [stocks_2016, stocks_2017]
pd.concat(s_list)
 SharesLowHigh
Symbol   
AAPL8095110
TSLA5080130
WMT405570
AAPL50120140
GE1003040
IBM877595
SLB205585
TXN5001523
TSLA100100300
# keys参数可以给两个DataFrame命名,该标签会出现在行索引的最外层,
会生成多层索引(multiIndex),names参数可以重命名每个索引层
pd.concat(s_list, keys=['2016', '2017'], names=['Year', 'Symbol'])
# keys参数可以给两个DataFrame命名,该标签会出现在行索引的最外层,会生成多层索引(multiIndex),names参数可以重命名每个索引层
pd.concat(s_list, keys=['2016', '2017'], names=['Year', 'Symbol'])
  SharesLowHigh
YearSymbol   
2016AAPL8095110
TSLA5080130
WMT405570
2017AAPL50120140
GE1003040
IBM877595
SLB205585
TXN5001523
TSLA100100300
# 也可以横向连接。只要将axis参数设为columns或1
pd.concat(s_list, keys=['2016', '2017'], axis='columns', names=['Year', None])
Year20162017
 SharesLowHighSharesLowHigh
AAPL80.095.0110.050.0120.0140.0
TSLA50.080.0130.0100.0100.0300.0
WMT40.055.070.0NaNNaNNaN
GENaNNaNNaN100.030.040.0
IBMNaNNaNNaN87.075.095.0
SLBNaNNaNNaN20.055.085.0
TXNNaNNaNNaN500.015.023.0
# concat函数默认使用的是外连接,会保留每个DataFrame中的所有行。也可以通过设定join参数,使用内连接:
pd.concat(s_list, join='inner', keys=['2016', '2017'], axis='columns', names=['Year', None])
Year20162017
 SharesLowHighSharesLowHigh
Symbol      
AAPL809511050120140
TSLA5080130100100300

append拼接DataFrame

# append是concat方法的超简化版本,append内部其实就是调用concat。pd.concat也可以
stocks_2016.append(stocks_2017)
 SharesLowHigh
Symbol   
AAPL8095110
TSLA5080130
WMT405570
AAPL50120140
GE1003040
IBM877595
SLB205585
TXN5001523
TSLA100100300
#copy() 函数返回一个字典的浅复制。
stocks_2015 = stocks_2016.copy() #Python 字典(Dictionary) copy() 函数返回一个字典的浅复制。浅复制是指当对象的字段值被复制时,字段引用的对象不会被复制
stocks_2015
 SharesLowHigh
Symbol   
AAPL8095110
TSLA5080130
WMT405570
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘 源 园

你的鼓励将是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值