我刚刚转动了一个数据框来创建下面的数据框:
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)
提前致谢。
答案 0 :(得分:2)
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
答案 1 :(得分:0)
编辑:当我尝试使用.reset_index()时,我得到的结果为&#39;属性错误:&#39; str&#39;对象没有属性&#39; view&#39;&#39;。
首先尝试将日期列转换为字符串类型列。
我认为pandas不喜欢reset_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'
如果您尝试使用字符串列,它将起作用。