删除/保留数据框列

时间:2019-10-16 20:31:41

标签: python dataframe indexing

我有一个使用Pandas read_csv从csv文件导入的数据框。它的形状是735、36。我需要删除最后33列-保留前3列。 列为'code''proc''All procedures'

我尝试了所有建议here

无论我做什么,都会出现以下错误:

TypeError: 'bool' object is not subscriptable

例如:

df1=df[['code','proc', 'All procedures']]
TypeError                                 Traceback (most recent call last)
<ipython-input-37-350994f9b7c6> in <module>
----> 1 df[['code','proc', 'All procedures']]

TypeError: 'bool' object is not subscriptable

我又开始了。 “布尔对象不可下标”错误已经消失,我认为df已被覆盖。

我正在尝试使用一些公开的医院活动数据并从中提取数据。我是神经外科医师,因此您可能需要耐心等待。数据在这里 https://files.digital.nhs.uk/77/0C8B3F/hosp-epis-stat-admi-proc-2018-19-tab.xlsx

我想在下面的代码中提取CSV的前三列,并输出为excel。

我的新问题是我无法提取“ proc”和“所有过程”列。

这是我的工作

import matplotlib.pyplot as plt
import pandas as pd
import pygal
import os
import webbrowser

这将导入我已转换为csv并重命名的电子表格的一个标签

df = pd.read_csv('neuro_spine_craino_just_all4.csv')
df.head(5) 
code    proc    All procedures  Main procedure  Male    Female  Gender Unknown  Mean age    Age 0   Age 1-4 ... Age 65-69   Age 70-74   Age 75-79   Age 80-84   Age 85-89   Age 90+ Day case    Emergency   Elective    Other

0 A01.1半球形切除术20 20 8 12 0 11.0 0 7 ... 0 0 0 0 0 0 0 0 0 0 1 A01.2脑全叶切除术53 53 37 16 0 40.0 1 1 ... 4 4 1 0 0 0 0 1 0 0 2 A01.3脑部分叶切除术174 148 95 79 0 41.0 1 5 ... 12 14 3 1 0 0 0 1 1 0 3 A01.8其他指定的大脑组织主要切除术20 15 12 8 0 34.0 1 0 ... 0 0 0 0 0 0 0 0 0 0 0 4 A01.9未指定的脑组织主要切除术3 3 0 3 0 39.0 0 0 ...

df.info

      代码proc所有过程
\ 0 A01.1半球切除术20
1 A01.2脑全叶切除术53
2 A01.3脑局部叶切除术174
3 A01.8其他指定的脑组织主要切除20
4 A01.9未明确说明的脑组织主要切除3

df.columns

索引(['代码','proc','所有过程','主过程','男性','女性',        “未知性别”,“平均年龄”,“ 0岁”,“ 1-4岁”,“ 5-9岁”,        “ 10-14岁”,“ 15岁”,“ 16岁”,“ 17岁”,“ 18岁”,“ 19岁”,        '20 -24岁','25 -29岁','30 -34岁','35 -39岁','40 -44岁',        '年龄45-49','年龄50-54','年龄55-59','年龄60-64','年龄65-69',        '年龄70-74','年龄75-79','年龄80-84','年龄85-89','年龄90+',        [日间情况],[紧急情况],[选修],[其他]],       dtype ='object')

df['code'], ['proc'], ['All procedures']

这只会给我第一个 列和索引。

(0 A01.1  1 A01.2  2 A01.3  3 A01.8  4 A01.9  5 A02.1  6 A02.2  7 A02.3  8 A02.4  9 A02.5  10 A02.6  11 A02.7  12 A02.8  13 A02.9  14 A03.1  15 A03.2  16 A03.3

1 个答案:

答案 0 :(得分:0)

要从数据框中提取这些列,您可以执行以下任一操作

result = df[['code', 'proc', 'All procedures']]

result = df.loc[:, ['code', 'proc', 'All procedures']]

有关此信息-称为切片,请参见pandas docs here

您的问题不包括传递到数据框的一个列表中的列-仅将'code'传递给实际的df选择器