繁体   English   中英

Python:在列表中存储多个数据帧

[英]Python: Store multiple dataframe in list

我有一个循环读取文档中的 Excel 工作表。 我想将它们全部存储在一个列表中:

  DF_list= list()

  for sheet in sheets:
     df= pd.read_excel(...)
     DF_list = DF_list.append(df)

如果我输入:

[df df df df]

它有效。

抱歉,我有 Matlab 背景,不太习惯 Python,但我喜欢它。 谢谢。

.append()修改列表并返回None 您在第一个循环中使用None覆盖DF_list并且追加将在第二个循环中失败。

因此:

DF_list = list()

for sheet in sheets:
    DF_list.append(pd.read_excel(...))

或者使用列表理解:

DF_list = [pd.read_excel(...) for sheet in sheets] 

试试这个

DF_list= list()

for sheet in sheets:

   df = pd.read_excel(...)

   DF_list.append(df)

或者对于更紧凑的python,这样的事情可能会做

DF_list=[pd.read_excel(...) for sheet in sheets]

如果您将使用参数sheet_name=None

dfs = pd.read_excel(..., sheet_name=None)

它将返回一个数据框字典:

sheet_name : string, int, mixed list of strings/ints, or None, default 0

    Strings are used for sheet names, Integers are used in zero-indexed
    sheet positions.

    Lists of strings/integers are used to request multiple sheets.

    Specify None to get all sheets.

    str|int -> DataFrame is returned.
    list|None -> Dict of DataFrames is returned, with keys representing
    sheets.

    Available Cases

    * Defaults to 0 -> 1st sheet as a DataFrame
    * 1 -> 2nd sheet as a DataFrame
    * "Sheet1" -> 1st sheet as a DataFrame
    * [0,1,"Sheet5"] -> 1st, 2nd & 5th sheet as a dictionary of DataFrames
    * None -> All sheets as a dictionary of DataFrames

完整的解决方案如下:

# (0) Variable containing location of excel file containing many sheets
excelfile_wt_many_sheets = 'C:\this\is\my\location\and\filename.xlsx'

# (1) Initiate empty list to hold all sheet specific dataframes
df_list= []

# (2) create unicode object 'sheets' to hold all sheet names in the excel file
df = pd.ExcelFile(excelfile_wt_many_sheets)
sheets = df.sheet_names

# (3) Iterate over the (2) to read in every sheet in the excel into a dataframe 
#     and append that dataframe into (1)
for sheet in sheets:
    df = pd.read_excel(excelfile_wt_many_sheets, sheet)
    df_list.append(df)

实际上没有必要定义新列表来存储一堆数据帧。 应用于具有多个工作表的 excel 文件的 pandas.ExcelFile 函数返回 ExcelFile 对象,该对象是一个可以将一堆数据帧捕获在一起的集合。 希望下面的代码有帮助。

df = pd.ExcelFile('C:\read_excel_file_with_multiple_sheets.xlsx')
Sheet_names_list = df.sheet_names
for sheet in Sheet_names_list :
   df_to_print = df.parse(sheet_name=sheet)
   print df_to_print

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM