Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在包含多个工作表的工作簿中循环并提取python中的值_Python_Pandas_Dataframe - Fatal编程技术网

在包含多个工作表的工作簿中循环并提取python中的值

在包含多个工作表的工作簿中循环并提取python中的值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含多个工作簿的excel spreedsheet,每个工作簿都有以下属性: data = pd.DataFrame({ 'start date': ['1988/01/12', '1988/01/13', '1988/01/14', '1989/01/20','1990/01/01'], 'end date': ['1989/01/12', '1989/01/12', '1989/01/12', '1990/01/20','1991/01/01'], 'value': [1155852

我有一个包含多个工作簿的excel spreedsheet,每个工作簿都有以下属性:

data = pd.DataFrame({
'start date': ['1988/01/12', '1988/01/13', '1988/01/14', '1989/01/20','1990/01/01'],
'end date': ['1989/01/12', '1989/01/12', '1989/01/12', '1990/01/20','1991/01/01'],
'value': [11558522, 12323552, NaN, 18412280, NaN]
}) 
我想循环浏览工作簿中的每张工作表,并:

  • 获取sheetname(这也是sheet0的id
  • 获取最小日期(以查看该工作表何时开始)
  • 获取最大日期(以查看该工作表何时结束)
  • 计算该工作表中缺少的值的数量(仅基于值列)
  • 我想要一个摘要spreedsheet/dataframe,其中包含sheetname(id)、开始日期、结束日期和缺少的值的数量,如下所示:

    data = pd.DataFrame({
    sheet name': ['sheet 1', 'sheet 2', 'sheet 3', 'sheet 4','sheet5'],
    'start date': ['1988/01/12', '1988/01/13', '1988/01/14', '1989/01/20','1990/01/01'],
    'end date': ['1989/01/12', '1989/01/12', '1989/01/12', '1990/01/20','1991/01/01'],
    'missing values': [3, 10, 1, 43, 8]
    }) 
    

    对所有工作表使用
    sheet\u name
    in对数据帧进行排序,将列转换为日期时间,通过创建的掩码的
    sum
    计算最小和最大错误值,最后附加到列表,最后通过构造函数创建新的
    DataFrame

    L = []
    for s, df in pd.read_excel('test.xlsx', sheet_name=None).items():
        d = {'sheet name': s, 
             'start date': pd.to_datetime(df['start date']).min(),
             'end date': pd.to_datetime(df['end date']).max(),
             'missing values':df['value'].isna().sum()}
        L.append(d)
    
    df1 = pd.DataFrame(L)