一、需求

根据原始 CSV 文件的列 A 的值,添加一列 B。

二、尝试 1

1. 将 A 列与 B 列对应的值写入字典 dict,A 列为 key,B 列为 value。

2. 将 CSV 文件处理为 DataFrame。

3.

import pandas as pd# 如果 df['A']存在于 dict_a 中,则取 value,值,否则使用默认值 15
dict_a = {'a':1,'b':1,'c':2,'d':4,'d':3}df = pd.read_csv(example.csv)
df['B'] = dict_a[df['A']]
# 上句话报错: TypeError: 'Series' objects are mutable, thus they cannot be hashed

在用pandas 处理文件时 报错:TypeError: 'Series' objects are mutable, thus they cannot be hashed,意思是 df['B'] 整体上是一个 Series,是容易改变的,因此不能作为 index 进行检索并赋值。

三、尝试 2

使用 for 循环,遍历 DataFrame的每一行,代码如下:

data = pd.read_csv('example.csv')
df = pd.DataFrame(data)
df['B'] = 15 # 设置默认值为 15# iterrows 遍历 DataFrame 的每一行
for index, row in df.iterrows():if row['A'] in dict_a:  print(row['B'])      row['B'] = dict_a[row['A']] print(row['B'])           else:row['B'] = 15df.to_csv('finished.csv')

通过 print 出来的结果可以看出来确实赋值成功,但生成的文件却没变化。

原因是:iterrows不要修改行,不应该修改正在迭代的东西。这不能保证在所有情况下都能正常工作。根据数据类型的不同,迭代器返回一个副本而不是一个视图,因此写入它将不起作用。

四、解决办法

最终使用 lambda 函数 及 df.apply()函数遍历行并访问函数的多个列。

代码如下:

# 注意 函数 formula() 一定要有返回值,否则下面 apply 函数不起作用
def formula(x):if x in slidetime_dict:return slidetime_dict[x]else:return 15df['slidetime'] = df.apply(lambda row: formula(row['A']), axis=1)

以上,问题解决。

————————————————————————————————————————————————————

更新补充知识点:

pandas 使用 apply() 函数时,被调用的函数(本例中是 formula())中各种条件分支都要有 return 返回值,否则生成的结果不对。

Pandas 报错 TypeError: ‘Series‘ objects are mutable, thus they cannot be hashed相关推荐

  1. 错误:‘Series‘ objects are mutable, thus they cannot be hashed

    错误:'Series' objects are mutable, thus they cannot be hashed 问题: 我在使用pandas里面的groupby函数:代码如下: People_ ...

  2. DataFrame/Series运行round()函数报错“TypeError: a float is required”解决办法

    DataFrame/Series运行round()函数报错"TypeError: a float is required"解决办法 原代码片段: #把数据按年龄分层,然后按照不同层 ...

  3. python创建对象后调用对象的方法,报错TypeError: getName() takes 0 positional arguments but 1 was given

    源码 ## TODO: Create multiple cars and visualize them height = 4 width = 6 world = np.zeros((height, w ...

  4. VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法...

    data里面做了定义 在方法里面进行赋值 用 this.info = repos.data 数据可以请求到,但是会报错 TypeError: Cannot set property 'listgrou ...

  5. Python报错TypeError: 'str' object is not callable

    原文:http://blog.sina.com.cn/s/blog_71f3890901017rsh.html Python报错TypeError: 'str' object is not calla ...

  6. python报错 TypeError: an integer is required

    问题描述: 在本地使用socket向NetAssist传送数据的时候,执行python文件后发现报出python 报错TypeError: an integer is required错误 代码: 1 ...

  7. 记录webpack使用问题,使用报错“UnhandledPromiseRejectionWarning,file-loader图片过大,无法加载图片,打包html文件报错TypeError

    记录webpack使用报错 版本号问题 运行npm run build,报错 "UnhandledPromiseRejectionWarning: TypeError: this.getRe ...

  8. Python报错TypeError: ‘User‘ object is not iterable

    Python报错TypeError: 'User' object is not iterable 原因 User对象是不可迭代的,我这里是因为User并不是list,所以是不可迭代的,所以不使用迭代即 ...

  9. [转载]UEditor报错TypeError: me.body is undefined

    本文转载来自: UEditor报错TypeError: me.body is undefined 今天在使用UEditor的setContent的时候报错,报错代码如下 TypeError: me.b ...

最新文章

  1. 原生CSS设置预加载图片之前的默认背景图
  2. [webapi] 如何在查看api时 显示api的说明
  3. 2018年年度总结,以及2019年规划
  4. CapsLock Enhancement via AutoHotKey
  5. 靠谱的Pycharm安装详细教程
  6. 垃圾回收机制和JVM垃圾回收常见算法
  7. MIX08,迎来Silverlight2的新时代
  8. C++中include头文件使用与的区别
  9. UCDOS SDK FOR C/C++ 1.0 说明文件
  10. css 兼容解决方案,CSS的常见兼容性问题解决方案
  11. iTunes恢复备份时失败?3个常见原因
  12. 大白菜安装系统两种方式
  13. [渝粤教育] 中国地质大学 婚姻与家庭法 复习题 (2)
  14. vscode在Windows下配置C语言环境,设置三个配置文件
  15. CAD显示图层(网页版)
  16. PCB各层含义简介 浅显易懂 图文展示
  17. 李炎恢ECMAScript6 / ES6+(一)
  18. Unity3D粒子系统实现落叶效果
  19. Java 常用的基本关键字和常用单词
  20. 2012网赛成都赛区

热门文章

  1. 克隆Linux虚拟机
  2. 制作在线单词测试的软件,Test Your Vocabulary:号称是最准的英语词汇量测试网站...
  3. 联想显示器在用HDMI转DVI线显示时,屏幕显示不全的解决办法
  4. c语言 ppm 大小,PPM图像处理器
  5. Android实现开屏广告(广点通SDK)
  6. 单片机应用系统设计技术——智能温控器
  7. 学计算机高考英语听力考试,北京:2018年高考英语听力机考问答
  8. [ubuntn]常用软件安装方法
  9. 阿里云服务器购买与配置(4)安装nginx
  10. python倒背如流_python基本操作(五)