首页 > 解决方案 > 仅访问数据框中的第二行列名

问题描述

我想读取一个excel文件,其中第二行是字符串格式的日期,第一行是每个日期对应的工作日,然后将第二行从字符串更改为日期时间。如果我只读取第二行作为索引,并完全跳过第一行的日期,我将执行以下操作将其转换为日期时间:

Receipts_tbl.columns = pd.to_datetime(Receipts_tbl.columns)

如果我有一个多索引数据框,其中索引的第一行仍然是工作日,并且我希望将第二行转换为日期时间,我该怎么做?

谢谢

标签: pythonpandasdataframe

解决方案


您没有举例说明您的数据源是什么样的,所以我在推断。

如果您使用pd.read_excelwith header=None,它将把前两行视为数据,您可以操纵它们来实现您的目标。这是一个最小示例,下面有一个示例“真实”数据行:

df = pd.DataFrame([['Mon', 'Tues'], ['10-02-1995', '11-23-1997'],
              [12, 32]])

#   0           1
#0  Mon         Tues
#1  10-02-1995  11-23-1997
#2  12          32

接下来,如您在问题中所说,将第一行转换为日期时间。

df.loc[1] = pd.to_datetime(df.loc[1])

从前两行创建一个多索引,并将其设置为数据框的列

df.columns = df.T.set_index([0,1]).index.set_names(['DOW', 'Date'])

最后,从第二行向下选择,因为前两行现在在列中。

df = df.loc[2:].reset_index()

df
#DOW    Mon                 Tues
#Date   812592000000000000  880243200000000000
#0      12                  32

请注意,DOW 和 Date 现在是列的多级索引,并且“数据”行已重新索引为从 0 开始。

如果我误解了你的问题,请告诉我。


推荐阅读