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

重命名和删除同一行数据中的列时出错。帧[重复]

白萧迟
2023-03-14

当我尝试重命名和删除列从熊猫data.frame我遇到一个错误说

熊猫df.rename.drop.groupby.reset_index顺序总是让我困惑。当我想重塑熊猫df时,我应该遵循什么正确的语法?

raw_data = {'patient': [1, 1, 1, 2, 2],
        'obs': [1, 2, 3, 1, 2],
        'treatment': [0, 1, 0, 1, 0],
        'score': ['strong', 'weak', 'normal', 'weak', 'strong'],    
        'tr': [1,2,3,4,5],
        'tk': [6,7,8,9,10],
        'ak': [11,12,13,14,15]

        }



df = pd.DataFrame(raw_data, columns = ['patient', 'obs', 'treatment', 'score','tr','tk','ak'])

df

   patient  observation  treatment Dr_score  tr  tk  ak
0        1            1          0   strong   1   6  11
1        1            2          1     weak   2   7  12
2        1            3          0   normal   3   8  13
3        2            1          1     weak   4   9  14
4        2            2          0   strong   5  10  15



def rename_drop(df):

    df=df.rename(columns = {'obs':'observation', 'score':'Dr_score'},inplace = True).drop('tk',axis=1,inplace=True)

    return df


rename_drop(df)

AttributeError:“非类型”对象没有属性“drop”


共有1个答案

松英喆
2023-03-14

错误在于使用inplace=True(在重命名和删除操作中)。这将返回一个非类型对象,而不是要应用drop的预期数据帧。

尝试:

df.rename(columns = {'obs':'observation', 'score':'Dr_score'}, inplace = False).drop('tk',axis=1,inplace=False)

编辑:将上面的行合并到原始函数中:

def rename_drop(df):

   df = df.rename(columns = {'obs':'observation', 'score':'Dr_score'}, inplace = False).drop('tk',axis=1,inplace=False)

   return df
 类似资料:
  • 我有一个熊猫数据框,看起来像这样(但实际上要大得多): 我只想删除包含-500(2)和整列(f和g)的整行。我的数据框是自动生成的,我还不知道哪些列和行包含-500。 有人知道怎么做吗? 谢谢

  • 以下脚本: Floor1正在正确执行,Floor2使用相同的df执行,但使用重命名的列则不正确。我得到一个关键错误: 我知道,有一个类似的问题:重命名列后get keyerror 但我并没有真正得到答案,更重要的是,我没有找到解决办法。

  • 问题内容: 如何重命名表中的列?这些列是: 我想重命名为 我尝试使用PHPMyAdmin面板,但出现此错误: 问题答案: Lone Ranger非常接近…实际上,您还需要指定重命名列的数据类型。例如: 请记住: 将INT替换为您的任何列数据类型(必填) 波浪号/反引号(`)是可选的

  • 问题内容: 尝试从Sybase到Microsoft SQL进行OPENQUERY时,我遇到错误: 通过OPENQUERY和OPENROWSET获得的结果集中不允许重复的列名。列名称“ PatientID”是重复的。 我建立的查询基于相似的entryID和PatientID联接了2个表。 例如: 当然,真正的查询不仅包含更多信息。 是否有重命名或删除AdmID和PatID列之一的好方法? 我尝试过:

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

  • 有没有比调用多个帧更好的方法来同时为给定的 SparkSQL 添加前缀或重命名所有或多个列? 例如,如果我想检测更改(使用完全外连接)。然后我剩下两个具有相同结构的< code >数据帧。