首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用for循环将不同的数据连在一起

用for循环将不同的数据连在一起
EN

Stack Overflow用户
提问于 2018-03-04 17:13:57
回答 1查看 45关注 0票数 1

我想把不同的金融数据连成一个。因此,当手动对2-3只股票执行此操作时,我会:

代码语言:javascript
复制
#getting dataframe from .csv file
df1 = pd.read_csv('C:\\Users\\Enric\\Desktop\\python\\tickers\\MSFT.csv',index_col=None, header=0)
df2 = pd.read_csv('C:\\Users\\Enric\\Desktop\\python\\tickers\\MMM.csv',index_col=None, header=0)

#selecting time period
df1_ = df1[(df1['date'] > '2017-01-01') & (df1['date'] <= '2018-01-01')]
df2_= df2[(df2['date'] > '2017-01-01') & (df2['date'] <= '2018-01-01')]

#concatenate
list=[]
list.append(df1_)
list.append(df2_)
df_all=pd.concat(list) #this is the final dataframe (I skipped some column set code)

另一方面,我有一份所有公司所在部门的名单:

代码语言:javascript
复制
healthcare=[u'ABT', u'ABBV', u'AET', u'A', u'ALXN', u'ALGN', u'AGN', u'AMGN', u'ANTM', u'BAX', u'BDX', u'BIIB', u'BSX', u'BMY', u'CELG', u'CNC', u'CI', u'COO', u'CVS', u'DVA', u'XRAY', u'EW', u'EVHC', u'ESRX', u'GILD', u'HCA', u'HOLX', u'HUM', u'IDXX', u'ILMN', u'INCY', u'ISRG', u'JNJ', u'LH', u'LLY', u'MDT', u'MRK', u'MTD', u'MYL', u'PKI', u'PRGO', u'PFE', u'DGX', u'REGN', u'RMD', u'SYK', u'TMO', u'UNH', u'UHS', u'VAR', u'VRTX', u'WAT', u'ZBH', u'ZTS']

我想把所有来自代码的定价数据串连在这个列表中:

代码语言:javascript
复制
for i in healthcare:
  df=pd.read_csv('C:\\Users\\Enric\\Desktop\\python\\tickers\\'+i+'.csv',index_col=None, header=0)
  df1_ = df[(df['date'] > '2017-01-01') & (df['date'] <= '2018-01-01')]
  list=[]
  list.append(df1_)

但是这是行不通的,因为每个循环我都在列表中复制"df“,所以当尝试使用pd.concat( list )时,我会得到一个错误。

我刚接触过python,这似乎是一个很容易的错误,但我找不到方法。我试着改变循环中每个公司的df1_name,但是我不知道怎么做。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-04 17:15:59

定义循环外列表:

代码语言:javascript
复制
L = []
for i in healthcare:
  df=pd.read_csv('C:\\Users\\Enric\\Desktop\\python\\tickers\\'+i+'.csv',index_col=None)
  df1_ = df[(df['date'] > '2017-01-01') & (df['date'] <= '2018-01-01')]
  L.append(df1_)

或者使用列表理解:

代码语言:javascript
复制
p = 'C:\\Users\\Enric\\Desktop\\python\\tickers\\'
d1 = '2017-01-01'
d2 = '2018-01-01'
L = [pd.read_csv(p+i+'.csv',index_col=None).query("@d1 < date <= @d2") for i in healthcare]
代码语言:javascript
复制
df = pd.concat(L)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49098072

复制
相关文章

相似问题

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