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(),一切正常