读取csv时删除熊猫中的索引列


128

我有以下代码导入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:'index'”

Answers:


70

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

如果要用简单的序号替换索引,请使用df.reset_index()

要了解为什么存在索引以及如何使用该索引,请参阅距熊猫10分钟的信息


1
谢谢!我决定不使用熊猫就以其他方式导入它。我必须对每个列执行一些算术运算,而python不喜欢附加索引列。熊猫当然是导入数据的最简单方法,但并非总是我发现的最好的方法。
Bogdan Janiszewski 2013年

2
您是否尝试过使用熊猫做算术?
杰米·布尔

1
可以删除索引名称吗?
2014年

3
是的index.name = None
丹·艾伦2014年

1
@BogdanJaniszewski,如果您不使用熊猫,那您为什么接受这个作为答案?
multigoodverse

249

在读取和读取CSV文件时,请包含参数index=False,例如:

 df.to_csv(filename, index=False)

并从CSV读取

df.read_csv(filename, index=False)  

这样可以防止出现此问题,因此您以后无需修复它。


8
非常感谢。这正是问题所在。
苍白的蓝点

1
“ header = False”以相同的方式删除标题
J.Dahlgren

29
应该是index_col=False
维达

1
使用df.to_sql("table",cursor,if_exists="append",index=False)还可以解决sqlite错误sqlite3.OperationalError: table message has no column named index
安娜

1
@vedda它似乎是index=Falseto_excel()index_col=Falseread_csv()在大熊猫0.23.4。:-/
马特·威尔基

70

df.reset_index(drop=True, inplace=True)


2
这实际上是我最喜欢的解决方案,但不是一个非常详尽的答案。手册阅读了有关参数的内容drop:“不要尝试将索引插入数据框列。这会将索引重置为默认的整数索引。” pandas.pydata.org/pandas-docs/stable/genic/…–
tommy.carstensen

@ tommy.carstensen那么,如何避免将索引上的整数替换为先前的索引呢?我认为这是对您的链接文字的误解。这里的问题是删除索引。到达这里。您将获得默认的整数,因为没有没有索引的日期框架,但是您删除了前一个索引。这就是为什么这个答案应该被接受的原因,也是因为它使用了高效的内存inplace=True
洛伦兹


3

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

df = pd.DataFrame(df.values);

编辑:

如果您具有异构数据类型,则不是一个好主意。更好地使用

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

2

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


2

一两件事,我做的是df=df.reset_index() 那么df=df.drop(['index'],axis=1)


错误:“轴中不包含标签['index']”
Vasin Yuriy

@VasinYuriy的意思是df.reset_index().drop(columns=['yourfirstindex', 'yoursecondindex']),它仅在标准情况下(索引没有名称,然后使用成为称为“索引”的列)与“索引”一起使用df.reset_index().drop(columns=['index'])。添加的参数axis=1是默认参数。不建议使用此方法,@ SubhojitMukherjee的reset_index(inplace=True)作品是“就地”的,因此可以节省内存。
洛伦兹
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.