当前位置: 首页 > 知识库问答 >
问题:

删除/保留数据帧列

毛声
2023-03-14

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

我已经尝试了这里所有的建议

无论我做什么,我都会得到以下错误:

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

我又开始了。“bool对象不可下标”错误已经消失,我认为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 1 A01.2全脑叶切除术53 53 37 16 0 0 40.0 1 1。。。4 4 1 0 0 0 1 0 0 2 A01.3脑部分叶切除术174 148 95 79 0 41.0 1 5。。。12 14 3 1 0 0 1 0 3 A01.8其他指定的主要脑组织切除20 15 12 8 0 34.0 1 0。。。0 0 0 0 0 0 0 0 4 A01.9未指明的脑组织主要切除术3 3 0 3 0 39.0 0 0。。。

df.info

代码程序所有程序
\0 A01.1半球切除术20
1 A01.2脑全叶切除术53
2 A01.3脑部分叶切除术174
3 A01.8其他指定的脑组织大切除术20
4 A01.9未指定的脑组织大切除术3个

df.columns

索引(['代码','程序','所有程序','主要程序','男性','女性','性别未知','平均年龄','年龄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='对象')

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个答案

公孙阳文
2023-03-14

要从数据帧中提取这些列,可以执行以下操作之一

结果=df['code','proc','All过程']]

或者

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

请参阅此处的熊猫文档以了解有关此操作的信息-称为切片

您的问题不包括传递到数据帧的一个列表中的列-只有'code'被传递到实际的df选择器中

 类似资料:
  • 我有一个包含大量列的Spark数据框架。我想从中删除两列以获得新的数据帧。 如果列更少,我可以在API中使用select方法,如下所示: 但是既然从长列表中挑选列是一项乏味的任务,有解决方法吗?

  • 这是我的密码: 我想知道如何将df3绑定到单个数据帧中作为"NA"s? 我在r_blogger上找到了一篇关于将向量或长度不等的数据帧组合成一个数据帧的文章。http://www.r-bloggers.com/r-combining-vectors-or-data-frames-of-unequal-length-into-one-data-frame/ 但是我从数据中得到的数据框,其中一些是空的

  • 我正在查看代码中的一个错误,其中一个数据框被分成了太多的分区(超过700个),当我试图将它们重新分区为48个时,这会导致太多的洗牌操作。我不能在这里使用coalesce(),因为我想在重新分区之前首先拥有更少的分区。 我正在寻找减少分区数量的方法。假设我有一个 spark 数据帧(具有多个列),分为 10 个分区。我需要根据其中一列进行 orderBy 转换。完成此操作后,生成的数据帧是否具有相同

  • 我有一个这样的专栏: 我希望专栏看起来像这样: 只希望保留重复记录的第一个或最后一个。 目前,我使用的是: 但它不起作用。我错过了什么吗?

  • 我有两个数据帧,它们共享多个公共列,如下所示: 第一个: 而第二个: 我想保留中的行,其列也存在于中。例如,df2的第27行有值,对于,这些值并不都存在于(因为df1只对列有值

  • 我有一个这样的数据帧(): 我想基本上删除重复记录,以便字段是唯一的。我不关心被丢弃的记录,在这种情况下,地址已经被删除,所以唯一通过的是拼写错误。我想要以下结果的数据框: 在R中,基本上是这样做的: 但是我需要一种方法在熊猫身上做到这一点。