Python 消除熊猫中的层次索引

Python 消除熊猫中的层次索引,python,pandas,Python,Pandas,我刚刚旋转了一个数据框来创建下面的数据框: date 2012-10-31 2012-11-30 term red -4.043862 -0.709225 blue -18.046630 -8.137812 green -8.339924 -6.358016 列应该是日期,列中最左边的列应该包含字符串 我希望能够运行这些行(使用.apply())并比较每个日期列下的值。我遇到的问题是,我认为df有一个

我刚刚旋转了一个数据框来创建下面的数据框:

date       2012-10-31   2012-11-30
term        
red       -4.043862     -0.709225   
blue      -18.046630     -8.137812
green     -8.339924      -6.358016
列应该是日期,列中最左边的列应该包含字符串

我希望能够运行这些行(使用.apply())并比较每个日期列下的值。我遇到的问题是,我认为df有一个层次索引

是否有办法给整个df一个新的索引(例如1、2、3等),然后有一个平面索引(但不排除第一列中的术语)

编辑:当我尝试使用.reset_index()时,出现以“AttributeError:“str”对象没有属性“view”结尾的错误

编辑2:这是df的外观:

编辑3:以下是df的说明:

<class 'pandas.core.frame.DataFrame'>
Index: 14597 entries, 101016j to zymogens
Data columns (total 6 columns):
2012-10-31 00:00:00    14597  non-null values
2012-11-30 00:00:00    14597  non-null values
2012-12-31 00:00:00    14597  non-null values
2013-01-31 00:00:00    14597  non-null values
2013-02-28 00:00:00    14597  non-null values
2013-03-31 00:00:00    14597  non-null values
dtypes: float64(6)

索引:14597个条目,101016j到酶原
数据列(共6列):
2012-10-31 00:00:00 14597非空值
2012-11-30 00:00:00 14597非空值
2012-12-31 00:00:00 14597非空值
2013-01-31 00:00:00 14597非空值
2013-02-28 00:00:00 14597非空值
2013-03-31 00:00:00 14597非空值
数据类型:float64(6)
提前谢谢

df= df.reset_index()
这将获取当前索引并使其成为列,然后从0中获得新索引

添加示例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'2012-10-31': [-4, -18, -18], '2012-11-30': [-0.7, -8, -6]}, index = ['red', 'blue','green'])

df
    2012-10-31  2012-11-30
red      -4     -0.7
blue    -18     -8.0
green   -18     -6.0

df.reset_index()
    term    2012-10-31  2012-11-30
0    red     -4         -0.7
1    blue   -18         -8.0
2    green  -18         -6.0
编辑:当我尝试使用.reset_index()时,出现以“AttributeError:“str”对象没有属性“view”结尾的错误

首先尝试将日期列转换为字符串类型列

我认为pandas不喜欢在这里重置_index(),因为您试图将字符串索引重置为只包含日期的列。如果只将日期作为列,pandas将在内部作为DateTimeIndex处理这些列。调用reset_index()时,pandas会尝试将字符串索引设置为日期列的另一列,但以某种方式失败。对我来说像个虫子,但不确定

例如:

t = pandas.DataFrame({pandas.to_datetime('2011') : [1,2], pandas.to_datetime('2012') :  [3,4]}, index=['A', 'B'])
t

2011-01-01 00:00:00     2012-01-01 00:00:00
A   1   3
B   2   4

t.columns
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-01 00:00:00, 2012-01-01 00:00:00]
Length: 2, Freq: None, Timezone: None

t.reset_index()
...
AttributeError: 'str' object has no attribute 'view'
t=pandas.DataFrame({pandas.to_datetime('2011'):[1,2],pandas.to_datetime('2012'):[3,4]),索引=['A','B'])
T
2011-01-01 00:00:00     2012-01-01 00:00:00
A 13
B 2 4
t、 纵队
[2011-01-01 00:00:00, 2012-01-01 00:00:00]
长度:2,频率:无,时区:无
t、 重置索引()
...
AttributeError:'str'对象没有属性'view'

如果您尝试使用字符串列,它将起作用。

当我尝试使用字符串列时,会收到一条错误消息“AttributeError:“str”对象没有属性“view”-我可以将整个内容粘贴到中(但很长…),我只是在答案中添加了一个示例。你应该发布你的代码,这样我们就可以确保数据帧与你在问题中描述的一样。奇怪的是,我刚刚尝试了你的数据并重置了_index(),一切正常