请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3366781 新帖:20

【dataframe】连接多个dataframe

特朗普对头发表于:8 月 19 日 09:23回复(1)

dataframe 连接¶

concat¶

concat([df1,df2,...],axis=0)

  • axis= 0 纵向;1 横向。
  • 使用前需导入过pandas模块
  • 使用时要注意连接的dataframe行列对齐
  • 可以同时拼接多个dataframe
  • 拼接是强制的,允许连接后存在同名的行或列,见纵向连接的第二个例子
# 获得一个dataframe类型的数据样例
df1=get_price('000001.XSHE',start_date='2016-02-01',end_date='2016-02-03',frequency='daily',fields=['open','close'])
df1
open close
2016-02-01 8.08 7.93
2016-02-02 7.93 8.05
2016-02-03 7.97 7.97
#导入pandas模块
import pandas as pd

横向连接¶

# 获得一个dataframe类型的数据样例
df2=get_price('000001.XSHE',start_date='2016-02-02',end_date='2016-02-04',frequency='daily',fields=['high','low'])
df2
high low
2016-02-02 8.12 7.92
2016-02-03 8.00 7.91
2016-02-04 8.09 8.00
pd.concat([df1,df2],axis=1)
open close high low
2016-02-01 8.08 7.93 NaN NaN
2016-02-02 7.93 8.05 8.12 7.92
2016-02-03 7.97 7.97 8.00 7.91
2016-02-04 NaN NaN 8.09 8.00

纵向连接¶

# 获得一个dataframe类型的数据样例
df3=get_price('000001.XSHE',start_date='2016-02-03',end_date='2016-02-04',frequency='daily',fields=['open','close'])
df3
open close
2016-02-03 7.97 7.97
2016-02-04 8.00 8.05
pd.concat([df1,df3,df3],axis=0)
open close
2016-02-01 8.08 7.93
2016-02-02 7.93 8.05
2016-02-03 7.97 7.97
2016-02-03 7.97 7.97
2016-02-04 8.00 8.05
2016-02-03 7.97 7.97
2016-02-04 8.00 8.05

按索引链接——join¶

df1.join([df2,df3,...])

  • 含义为按照df1的索引,将df1,df2,df3...链接起来,返回一个链接后的dataframe。
  • df1,df2,df3...皆为dataframe 使用样例:
# 获取两个股票某一天的财务数据pe与市值
q = query(
    valuation.pe_ratio,valuation.market_cap,valuation.code
).filter(
    valuation.code.in_(['000001.XSHE','000002.XSHE']) 
)
df1 = get_fundamentals(q, '2017-10-15')
# 调整股票代码为index
df1.index=df1['code']
del df1['code']
df1
pe_ratio market_cap
code
000001.XSHE 8.5323 1950.5587
000002.XSHE 12.9400 2918.2539
# 获取股票基本信息,中文名称等
df2=get_all_securities(types=['stock'],date='2017-10-15')
# 显示前5个
df2.head(5)
display_name name start_date end_date type
000001.XSHE 平安银行 PAYH 1991-04-03 2200-01-01 stock
000002.XSHE 万科A WKA 1991-01-29 2200-01-01 stock
000004.XSHE 国农科技 GNKJ 1990-12-01 2200-01-01 stock
000005.XSHE 世纪星源 SJXY 1990-12-10 2200-01-01 stock
000006.XSHE 深振业A SZYA 1992-04-27 2200-01-01 stock
# 按照df1的index,将df1与df2两个dataframe链接起来
df1.join([df2])
pe_ratio market_cap display_name name start_date end_date type
code
000001.XSHE 8.5323 1950.5587 平安银行 PAYH 1991-04-03 2200-01-01 stock
000002.XSHE 12.9400 2918.2539 万科A WKA 1991-01-29 2200-01-01 stock

全部回复

0/140

量化课程

    移动端课程