首页 > 解决方案 > 检索相对于数据框中特定行具有今天日期的列名

问题描述

在此处输入图像描述我有一个从 Excel 中读取的 pandas 数据框,如下所示。列标签是日期。鉴于今天的日期是 2020-04-13,我想检索接下来 7 天的 C 行值。
目前,我设置索引并检索 C 的值,当我打印行时,我得到所有日期的输出及其 C 的值。
我知道我应该使用date.today(). 有人可以让我知道如何为 C 行捕获今天日期 ( 2020-04-13) 的列吗?我是 python/pandas 的初学者,正在学习数据框的概念。

input_path = "./data/input/data.xlsx"   
pd_xls_obj = pd.ExcelFile(input_path)   
data = pd.read_excel(pd_xls_obj,sheet_name="Sheet1",index_col='Names')   
rows = data.loc["C"] 

在此处输入图像描述

标签: pythonpandasdataframe

解决方案


在 pandas 中使用日期作为列标签而不是行索引是非正统的,并且由于 pandas dtypes 按列而不是按行,这意味着 pandas 不会正确地将列标签类型检测为“日期时间”,而不是字符串/ object,因此其上的比较和算术运算符将无法正常工作,因此您将不得不做许多不必要的可避免的手动工作以及与日期时间的转换。反而:

您应该在读取时立即转置数据帧

data = pd.read_excel(...).T

现在您的日期将位于具有相同 dtype 的单列中,您可以使用pd.to_datetime().

然后,确保数据类型正确,即索引的数据类型应该是“日期时间”,而不是“对象”、“字符串”等。(请在问题中发布您的数据集或 URL 以使其可重现)。

现在'C'将是一列而不是一行。

您可以通过以下方式访问整个“C”列:

rows = data[:, 'C']

...同样,您可以为所需日期的行子集编写表达式。等待您的数据片段,以显示代码。


推荐阅读