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

2024-09-28 22:04:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多个工作簿的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]
}) 

我想循环浏览工作簿中的每张工作表,并:

  1. 获取sheetname(这也是sheet0的id
  2. 获取最小日期(以查看该工作表何时开始)
  3. 获取最大日期(以查看该工作表何时结束)
  4. 计算该工作表中缺少的值的数量(仅基于值列)

我想要一个摘要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]
}) 

Tags: iddataframedata数量date属性valuenan
1条回答
网友
1楼 · 发布于 2024-09-28 22:04:36

对所有工作表使用^{}中的sheet_name来对数据帧进行排序,将列转换为日期时间,并通过^{}创建的掩码的sum,最后附加到列表,最后通过构造函数创建新的DataFrame来获得最小和最大的misng值,并计数misng值的数量:

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)

相关问题 更多 >