Python 重命名和删除同一行data.frame中的列时出错
当我尝试从pandas data.frame重命名和删除列时,我遇到一个错误,错误是说Python 重命名和删除同一行data.frame中的列时出错,python,pandas,Python,Pandas,当我尝试从pandas data.frame重命名和删除列时,我遇到一个错误,错误是说>AttributeError:“NoneType”对象没有属性“drop” 熊猫df.rename.drop.groupby.reset_索引顺序总是让我感到困惑。当我想重塑这个模型时,我应该遵循什么正确的语法 raw_data = {'patient': [1, 1, 1, 2, 2], 'obs': [1, 2, 3, 1, 2], 'treatment': [0, 1,
>AttributeError:“NoneType”对象没有属性“drop”
熊猫df.rename.drop.groupby.reset_索引顺序总是让我感到困惑。当我想重塑这个模型时,我应该遵循什么正确的语法
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”
错误在于使用inplace=True(在重命名和删除操作中)。这将返回一个非类型对象,而不是要应用drop的预期数据帧 尝试: 编辑:将上面的行合并到原始函数中:
def rename_drop(df):
df = df.rename(columns = {'obs':'observation', 'score':'Dr_score'}, inplace = False).drop('tk',axis=1,inplace=False)
return df
错误在于使用inplace=True(在重命名和删除操作中)。这将返回一个非类型对象,而不是要应用drop的预期数据帧 尝试: 编辑:将上面的行合并到原始函数中:
def rename_drop(df):
df = df.rename(columns = {'obs':'observation', 'score':'Dr_score'}, inplace = False).drop('tk',axis=1,inplace=False)
return df
删除这两个
inplace=True
,这是多余的,因为您已经将其分配回df
。这将起作用:df=df.rename(columns={'obs':'observation','score':'Dr_score'})。drop(columns='tk')
df=df.rename(columns={'obs':'observation',score':'Dr_score'})。drop('tk',axis=1)
I尽管我应该做inplace=True
,因为我想更改原始的df,它是多余的,因为您已经将其分配回df
。这将起作用:df=df.rename(columns={'obs':'observation','score':'Dr_score'})。drop(columns='tk')
df=df.rename(columns={'obs':'observation',score':'Dr_score'})。drop('tk',axis=1)
我认为我应该做inplace=True
,因为我想更改原始的dfI,我认为你误读了我的答案。我设置inplace=False,因此它确实返回一个数据帧。事实上,inplace默认为False,因此使我的代码行与您在对OP.Okey的评论中所写的相同,但仍然不正确。。。您在哪里保存数据帧?。。您需要df=df….
<代码>就地默认为False。我认为df=df.rename(columns={'obs':'observation','score':'Dr_score'})。drop('tk',axis=1)
是正确的解决方案(和dup)。我想你误读了我的答案。我设置inplace=False,因此它确实返回一个数据帧。事实上,inplace默认为False,因此使我的代码行与您在对OP.Okey的评论中所写的相同,但仍然不正确。。。您在哪里保存数据帧?。。您需要df=df….
<代码>就地默认为False。我认为df=df.rename(columns={'obs':'observation','score':'Dr_score'})。drop('tk',axis=1)
是正确的解决方案(和dup)