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