Python 仅访问数据帧中的第二行列名

Python 仅访问数据帧中的第二行列名,python,pandas,dataframe,Python,Pandas,Dataframe,我想读取一个excel文件,其中第二行是字符串格式的日期,第一行是对应于每个日期的工作日,然后将第二行从字符串更改为datetime。如果我只读取第二行作为索引,并完全跳过第一行的日期,我将执行以下操作将其转换为日期时间: Receipts_tbl.columns = pd.to_datetime(Receipts_tbl.columns) 如果我有一个多索引数据帧,其中第一行索引保持为工作日,并且我希望第二行转换为datetime,我该怎么做 Thanx您没有给出数据源外观的示例,因此我推断

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

Receipts_tbl.columns = pd.to_datetime(Receipts_tbl.columns)
如果我有一个多索引数据帧,其中第一行索引保持为工作日,并且我希望第二行转换为datetime,我该怎么做


Thanx

您没有给出数据源外观的示例,因此我推断

如果使用header=None的pd.read_excel,它会将前两行视为数据,您可以操纵它们以实现目标。下面是一个最简单的示例,下面是一个实际数据行示例:

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
接下来,如您在问题中所说,将第一行转换为datetime

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开始


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

假设你的剪贴板上有这些数据

df.loc[1] = pd.to_datetime(df.loc[1])
Day Date Data

Mo 2018-08-06 blah
Mo 2018-08-06 blah
Mo 2018-08-06 blah
Tu 2018-08-07 blah
试一试

获取多索引示例的步骤 然后将日期更改为Datetime

df2 = df.reset_index()
df2.Date = pd.to_datetime(df2.Date, yearfirst=True)
之后,如果需要,可以再次设置多重索引

注意,如果您的 日期时间字符串的格式不同。它假定 月份优先,除非将dayfirst或yearfirst设置为True