2013-11-20 173 views
40

我有下面的代码,它导入一个CSV文件。有3列,我想设置他们的前两个变量。当我将第二列设置为变量“效率”时,索引列也被加上了。我如何摆脱索引列?删除熊猫中的索引列

df = pd.DataFrame.from_csv('Efficiency_Data.csv', header=0, parse_dates=False) 
energy = df.index 
efficiency = df.Efficiency 
print efficiency 

我尝试使用

del df['index'] 

我设置

energy = df.index 

我在另一篇文章后发现,但导致 “KeyError异常: '索引'”

回答

27

DataFrames和Series始终有一个索引。尽管它显示在列的旁边,但它不是列,这就是为什么del df ['index']不起作用的原因。

如果要用简单的连续数字替换索引,请使用df.reset_index()。我强烈建议阅读一些熊猫文档,比如10 minutes to Pandas,以了解索引为什么存在的原因。

+0

谢谢!我决定只用一种不使用熊猫的方式导入它。我必须在每个列上执行一些算术运算,并且python不喜欢附加索引列。熊猫当然是导入数据的最简单方式,但并不总是我发现的最好的方式。 –

+0

您是否尝试使用熊猫来进行算术? –

+0

可以删除索引名吗? – Quant

0

可以通过使用from_csv函数的index_col参数指定您的csv文件中哪一列是索引如果if_csv函数为 if这并不能解决您的问题,请提供您的数据示例

1

如果您的问题与我只想将列标题从0重置为列大小的问题相同。做

df = pd.DataFrame(df.values); 

编辑:

若您对异构数据类型是个好主意。更好的只是使用

df.columns = range(len(df.columns)) 
73

当从中读取CSV文件包括参数索引,以便例如

df.to_csv(filename , index = False) 

,并从CSV读

df.read_csv(filename , index = False) 

这应该防止=假这个问题,所以你不需要以后修复它。

+2

非常感谢。这正是问题所在。 –

+0

“header = False”用于以相同方式删除标题 –

+0

写入json时如何? – pyd

4

例如,您可以将其中一列设置为索引以防其为“id”。 在这种情况下,索引列将替换为您选择的其中一列。

df.set_index('id', inplace=True) 
0

df.reset_index(降=真,就地= TRUE)