鱼C论坛

 找回密码
 立即注册
查看: 4154|回复: 10

遇到了'NoneType' object has no attribute 'replace'的问题

[复制链接]
发表于 2022-11-19 07:54:01 | 显示全部楼层 |阅读模式
10鱼币
def insert_conditions(df, s_conditions, reference_column, new_column_name, position):
    data = df.insert(column = new_column_name,loc = position, value = df['Reason for absence']).replace({'Reason':s_conditions})
df = load_data()
s_conditions = load_conditions()
insert_conditions(df, s_conditions, reference_column='Reason for absence', new_column_name='Reason', position=0)
print(df.iloc[:5][['Reason','ID', 'Reason for absence', 'Month of absence']].to_string())

想要javascript:;这种效果 但是报错了。。

b5888b61a4981654138aa446e4fe90e.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-19 08:41:37 | 显示全部楼层
这说明了有一个变量返回了 None,而导致的错误,报错大意就是 “None"类型没有属性‘replace',检查检查,调试调试

报错的是第几行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-19 09:39:33 | 显示全部楼层
本帖最后由 suchocolate 于 2022-11-19 10:21 编辑

df.insert()不返回数据,默认返回None,数据直接插入到df里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-19 09:44:34 | 显示全部楼层
df 的 insert 方法的返回值是 None ,导致在执行 insert_conditions 函数时, python 就会执行
data = df.insert(column = new_column_name,loc = position, value = df['Reason for absence']).replace({'Reason':s_conditions})
然后变成
data = None.replace({'Reason':s_conditions})
然后就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-19 21:06:13 | 显示全部楼层
zhangjinxuan 发表于 2022-11-19 08:41
这说明了有一个变量返回了 None,而导致的错误,报错大意就是 “None"类型没有属性‘replace',检查检查, ...

第二第五行都报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-19 21:07:17 | 显示全部楼层
tommyyu 发表于 2022-11-19 09:44
df 的 insert 方法的返回值是 None ,导致在执行 insert_conditions 函数时, python 就会执行
然后变成然 ...

哦哦哦 明白你意思了,那这种我要解决这个问题该咋写嘞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-19 21:08:43 | 显示全部楼层
suchocolate 发表于 2022-11-19 09:39
df.insert()不返回数据,默认返回None,数据直接插入到df里。

这个我在也查到了大佬 但是怎么解决啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-19 21:09:37 | 显示全部楼层
darknight006 发表于 2022-11-19 21:08
这个我在也查到了大佬 但是怎么解决啊

这个代码只有一个片段,也看不出来怎么改,能把完整代码发一下么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-19 21:29:59 | 显示全部楼层
tommyyu 发表于 2022-11-19 21:09
这个代码只有一个片段,也看不出来怎么改,能把完整代码发一下么
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
import pandas as pd

def load_data():
    return pd.read_csv('Absenteeism_at_work.csv',sep = ';')
def load_conditions():
    return pd.read_table('conditions.txt', names=['Reason for absence'])
def insert_conditions(df, s_conditions, reference_column, new_column_name, position):
    data = df.insert(column = new_column_name,loc = position, value = df['Reason for absence']).replace({'Reason':s_conditions})


df = load_data()
print(df.info())
df = load_data()
s_conditions = load_conditions()
insert_conditions(df, s_conditions, reference_column='Reason for absence', new_column_name='Reason', position=0)
print(df.iloc[:5][['Reason','ID', 'Reason for absence', 'Month of absence']].to_string())

这是目前写到的部分,之前的函数都测试过没啥问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-19 23:29:59 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-11-19 23:35 编辑
darknight006 发表于 2022-11-19 21:29
这是目前写到的部分,之前的函数都测试过没啥问题


df.insert 函数没返回(即返回None, None属于NoneType  理解?)
df.insert()后,没有返回,但 df 被“就地改变” ,所以要对修改后的df 用 replace() ,

那就另起一行 df.replace(...)  

另外想说,你的几个函数定义得是不是有点多余,有点脱了裤子放屁的感觉。。  

ps: 数据分析或数据处理,尽量用 Jupyter Notebook或IPython等类似交互式界面(省去你一堆print,)。。
很方便,可以一步一步先确定拿到自己需要的数据或效果, 最后有必要的话,再梳理和整合到一起。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-20 16:58:46 | 显示全部楼层
阿奇_o 发表于 2022-11-19 23:29
df.insert 函数没返回(即返回None, None属于NoneType  理解?)
df.insert()后,没有返回,但 df 被 ...

这是我作业。。。一个函数代表一个题目。。然后后面还得调用啥的就。。
我用的就是jupyter
还有就是大佬我分开写只执行了df.insert()啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 15:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表