得到日期时间索引现在我如何让这些记录脱颖而出?

问题描述

目标:一个 excel 文件中,我想获取所有日期在一个范围内的记录并将它们写入一个新的 excel 文件。我正在使用的 infile 有 500K+ 行和 21 列。

我的尝试: 我已将 infile 读入 Pandas 数据帧,然后返回 [('A',0),('B',[('C',1),[('D',2),('E',2)],('F',1)],('G',0)] 。如果我打印 DatetimeIndex 变量,我会得到所需的记录。

range

我遇到问题的地方是将上述 import pandas as pd in_excel_file = r'path\to\infile.xlsx' out_excel_file = r'path\to\outfile.xlsx' df = pd.read_excel(in_excel_file) range = (pd.date_range(start='1910-1-1',end='2021-1-1')) print(range) ##prints DatetimeIndex(['1990-01-01','1990-01-02','1990-01-03','1990-01-04','1990-01-05','1990-01-06','1990-01-07','1990-01-08','1990-01-09','1990-01-10',... '2020-12-23','2020-12-24','2020-12-25','2020-12-26','2020-12-27','2020-12-28','2020-12-29','2020-12-30','2020-12-31','2021-01-01'],dtype='datetime64[ns]',length=11324,freq='D') 放到输出文件中。以下给了我一个错误

DatetimeIndex
range.to_excel(out_excel_file,index=False)

我很确定,当写到 excel 时,它必须是 dataframe。所以,我的问题是如何将 AttributeError: 'DatetimeIndex' object has no attribute 'to_excel' 变量获取到数据帧对象?

解决方法

目标:从一个 excel 文件中,我想获取日期在一个范围内的所有记录,并将它们写入一个新的 excel 文件。我正在使用的 infile 有 500K+ 行和 21 列。

您可以使用索引操作从原始 DataFrame 中仅选择您需要的数据并将结果保存在 Excel 文件中。

为了首先执行此操作,您需要检查原始 DataFrame 中的日期列是否已转换为日期时间/日期对象:

import numpy as np

date_column = "date"  # Suppose this is your date column name
if not np.issubdtype(df[date_column].dtype,np.datetime64):
    df.loc[:,date_column] = pd.to_datetime(df[date_column],format="%Y-%m-%d")

现在您可以使用常规索引操作来获取您需要的所有值:

mask = (df[date_column] >= '1910-01-01') & (df[date_column] <= '2021-01-01')  # Creates mask for date range
out_dataframe = df.loc[mask]  # Here we select the indices using our mask
out_dataframe.to_excel(out_excel_file)
,

在写入 Excel 之前,您可以尝试从 DatetimeIndex 创建一个数据框,如下所示:

range_df = pd.DataFrame(index=range).rename_axis(index='range').reset_index()

或者按照@guimorg 的建议,我们也可以这样做:

range_df = range.to_frame(index=False,name='range')

然后,继续使用您的代码将其写入 Excel:

range_df.to_excel(out_file,index=False)