Python 熊猫:在列标题的顶部添加一行,其中日期基于日期

Python 熊猫:在列标题的顶部添加一行,其中日期基于日期,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我有一个DataFrame数据透视表,其中日期作为列标题,如下所示: Due Date 2020-01-1 2020-04-12 2020-04-22 2020-05-06 2020-05-1 Customer Aviva 0 0 0 0 1000 Debenhams 0

我有一个DataFrame数据透视表,其中日期作为列标题,如下所示:

Due Date    2020-01-1   2020-04-12  2020-04-22  2020-05-06  2020-05-1
Customer                                            
Aviva          0            0           0           0         1000  
Debenhams      0        75325           0           0           0   
H&M         1204            0           0           0           0
我想在标题下方添加一行,该行的日期与标题日期对应:

    Due Date    2020-01-1   2020-04-12  2020-04-22  2020-05-06  2020-05-1
    Day         Wednesday     Sunday    Wednesday    Wednesday    Friday
    Customer                                            
    Aviva          0            0           0           0         1000  
    Debenhams      0        75325           0           0           0   
    H&M         1204            0           0           0           0
我知道我必须在datetime头上调用day_name()方法,我可以这样做,我尝试遍历列并找到这样做的方法,但没有成功

此外,如果不可能做到这一点,那么任何其他想法都是受欢迎的


非常感谢您的帮助。

您可以通过以下第二级创建多索引:

如果还需要设置列名称,请使用:

编辑:

如果可能,列中的某些非日期时间值:

df['sum'] = df.sum(axis=1)
df.columns = [df.columns, pd.to_datetime(df.columns, errors='coerce').day_name().fillna('-')]

print (df)
          2020-01-1 2020-04-12 2020-04-22 2020-05-06 2020-05-1    sum
          Wednesday     Sunday  Wednesday  Wednesday    Friday      -
Due Date                                                             
Aviva             0          0          0          0      1000   1000
Debenhams         0      75325          0          0         0  75325
H&M            1204          0          0          0         0   1204

您可以通过以下第二级创建多索引:

如果还需要设置列名称,请使用:

编辑:

如果可能,列中的某些非日期时间值:

df['sum'] = df.sum(axis=1)
df.columns = [df.columns, pd.to_datetime(df.columns, errors='coerce').day_name().fillna('-')]

print (df)
          2020-01-1 2020-04-12 2020-04-22 2020-05-06 2020-05-1    sum
          Wednesday     Sunday  Wednesday  Wednesday    Friday      -
Due Date                                                             
Aviva             0          0          0          0      1000   1000
Debenhams         0      75325          0          0         0  75325
H&M            1204          0          0          0         0   1204

啊,那太好了,谢谢你,但是如果我在末尾有一个totals列,它不是datetime,所以不能被解析,那么我怎么能忽略它呢?抱歉忘了在问题中添加它啊,太好了,谢谢你,但是如果我的末尾有一个不是日期时间的总计列,因此无法解析,我怎么能忽略它呢?抱歉,忘了在问题中添加它
df['sum'] = df.sum(axis=1)
df.columns = [df.columns, pd.to_datetime(df.columns, errors='coerce').day_name().fillna('-')]

print (df)
          2020-01-1 2020-04-12 2020-04-22 2020-05-06 2020-05-1    sum
          Wednesday     Sunday  Wednesday  Wednesday    Friday      -
Due Date                                                             
Aviva             0          0          0          0      1000   1000
Debenhams         0      75325          0          0         0  75325
H&M            1204          0          0          0         0   1204