将数据分配给单独的数据框,按年组合和排序

时间:2016-06-22 17:41:36

标签: python sorting pandas dataframe concat

我有40年的数据,因此我尝试将每个数据分别分配到一个数据框,然后将它们全部存储在新的数据框中,然后对它们进行排序。以下是我到目前为止:

import pandas as pd
from pandas import DataFrame

year = 1976
count = 1

for i in range(0,40):

    df[count] = pd.read_excel('42003h'+str(year)+'.xlsx', sheet_name = 'Sheet1')

    count = count + 1
    year = 1976 + 1

我收到了这个错误

  

传递的项目数量错误12,展示位置意味着1

请问任何帮助吗?

3 个答案:

答案 0 :(得分:1)

我认为您可以先创建Dataframes dfs的列表,然后将concat列为dfcount没有必要。列year的最后一次IIUC sort_values

import pandas as pd

year = 1976

dfs = []
for i in range(0,40):
    dfs.append(pd.read_excel('42003h'+str(year)+'.xlsx', sheet_name = 'Sheet1'))
    year += 1

#if need concat by columns        
#df = pd.concat(dfs, axis=1)   

#if need concat by rows
df = pd.concat(dfs)  

#if need sort by column `year`
df.sort_values(by='year', inplace=True) 

答案 1 :(得分:0)

我认为您需要初始化词典:

df = {}
for i in range(0,40):

    df[count] = pd.read_excel('42003h'+str(year)+'.xlsx', sheet_name = 'Sheet1')

答案 2 :(得分:0)

我会这样做:

import glob
import pandas as pd

files = glob.glob('42003h*.xlsx')

# if you want to merge your DFs horizontally then add: `axis=1` parameter
df = pd.concat([pd.read_excel(f) for f in files], ignore_index=True).sort_values('year')

count = len(files)