How to delete a column from a data frame with pandas?
我读了我的数据
1 2 3 | import pandas as pd df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t') print df |
得到:
1 2 3 4 | id text 0 361.273 text1... 1 374.350 text2... 2 374.350 text3... |
如何从上述数据框中删除
1 2 3 | import pandas as pd df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t') print df.drop('id', 1) |
但这引发了一个例外:
1 | ValueError: labels ['id'] not contained in axis |
如果一个
查看
在pandas中删除列的最佳方法是使用drop:
1 | df = df.drop('column_name', axis=1) |
其中,
要在不重新分配
1 | df.drop('column_name', axis=1, inplace=True) |
最后,要按列号而不是按列标签删除,请尝试此操作。要删除,例如第一列、第二列和第四列:
1 | df.drop(df.columns[[0, 1, 3]], axis=1) # df.columns is zero-based pd.Index |
例外情况:
如果请求的列号或标签错误,将引发错误。使用
将引发异常答案基于@londonrob的答案,并留下来帮助未来的访问者。
实际删除列
如果传递的列完全匹配,那么
但是,如果您不需要删除列,那么您可以这样选择感兴趣的列:
1 2 3 4 5 6 7 8 | In [54]: df['text'] Out[54]: 0 text1 1 text2 2 textn Name: text, dtype: object |
如果你一开始不想这样做,那么你就把cols列表作为参数
1 2 3 4 5 6 7 8 9 10 11 12 13 | In [53]: import io temp="""id text 363.327 text1 366.356 text2 37782 textn""" df = pd.read_csv(io.StringIO(temp), delimiter='\s+', usecols=['text']) df Out[53]: text 0 text1 1 text2 2 textn |
关于您的错误,这是因为