Pandas:Dataframe.Drop - ValueError:标签[' id']未包含在轴中

时间:2017-02-08 14:40:36

标签: python pandas

尝试从Pandas中的DataFrame中删除列。 DataFrame从文本文件创建。

import pandas as pd 
df = pd.read_csv('sample.txt')
df.drop(['a'], 1, inplace=True)

但是,这会产生以下错误:

ValueError: labels ['a'] not contained in axis      

以下是sample.txt文件的副本:

a,b,c,d,e
1,2,3,4,5
2,3,4,5,6
3,4,5,6,7
4,5,6,7,8

提前致谢。

2 个答案:

答案 0 :(得分:10)

所以问题是您的“sample.txt”文件实际上并不包含您要删除的数据。

你的行

df.drop(['id'], 1, inplace=True) 

正在考虑获取DataFrame(其中包含示例文件中的数据),在第一行(轴1)中找到值为“id”的列并执行inplace替换(修改现有对象而不是创建一个缺少该列的新对象,这将返回None并只修改现有对象。)。

问题是您的示例数据不包含标题等于'id'的列。

在您当前的示例文件中,您只能看到第1轴中的值为“a”,“b”,“c”,“d”或“e”的值。更正代码以删除其中一个值或获取具有正确标头的示例文件。

Pandas的文档并不是很棒,但这里有一个很好的例子,说明如何在Pandas中进行列删除:http://chrisalbon.com/python/pandas_dropping_column_and_rows.html

**以下添加以回复@saar的答案评论

这是我的示例代码: sample.txt的:

a,b,c,d,e
1,2,3,4,5
2,3,4,5,6
3,4,5,6,7
4,5,6,7,8

示例代码:

import pandas as pd

df = pd.read_csv('sample.txt')
print('Current DataFrame:')
print(df)
df.drop(['a'], 1, inplace=True)
print('\nModified DataFrame:')
print(df)

输出:

>>python panda_test.py
Current DataFrame:
   a  b  c  d  e
0  1  2  3  4  5
1  2  3  4  5  6
2  3  4  5  6  7
3  4  5  6  7  8

Modified DataFrame:
   b  c  d  e
0  2  3  4  5
1  3  4  5  6
2  4  5  6  7
3  5  6  7  8

答案 1 :(得分:1)

bad= pd.read_csv('bad_modified.csv')
A=bad.sample(n=10)
B=bad.drop(A.index,axis=0)

这是部分删除数据帧的示例。 万一你需要它。