一、需求

根据原始 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. 一篇综述带你全面了解迁移学习的领域泛化(Domain Generalization)
  2. pytorch DataLoader
  3. 网络工程师面试PK--胜者为王
  4. pythonhash加密_Python字符串hashlib加密模块使用案例
  5. linux配置rsync服务器
  6. 【Codeforces 63C】Bulls and Cows
  7. U盘安装CentOS7的最终解决方案
  8. xshell5登录不上,让更新,结果还是不行的解决方法
  9. 给BERT加一个loss就能稳定提升?斯坦福+Facebook最新力作!
  10. 计算机窗口显示桌面,Windows Server 2012 R2在桌面上显示计算机/网络图标
  11. c语言学生成绩管理系统的设计,C语言学生成绩管理系统设计
  12. 吴恩达 Deeplearning深度学习笔记v5.7 最新PDF版 免积分下载
  13. 龙芯 linux 网页flash,FlashPlayer - 龙芯开源社区
  14. 用计算机如何算瓷砖菱形加工,瓷砖菱形铺贴怎么计算面积
  15. html白色背景遮罩,CSS 给图片或背景图片加颜色遮罩
  16. 文献整理和论文阅读方法
  17. 自行车码表使用说明—SIGMA(西格玛) BC906
  18. tplinkwr710n改无线打印服务器,TP-Link TL-WR710N V1无线路由器AP模式设置
  19. C++ 求最大公因数
  20. 盗取QQ密码的顽固的IEXPLORE.EXE病毒

热门文章

  1. Mybatis-There is no getter for property named 'tj' in 'class
  2. skylake服务器处理器M系列,瞄三大产品线!谈Intel Skylake架构CPU
  3. Java kafka producer 的常用参数的意义说明及默认值
  4. DSP C6657 image_processing_evmc6657l网页加载图片示例
  5. 计算机网络(七)——互联网上的音频/视频服务 和 无线网络与移动网络
  6. Go channel 通道
  7. spring源码阅读笔记09:循环依赖
  8. Ubuntu18.04下 LOAM_Velodyne 的编译安装(PCL为1.8.1)
  9. 局部线性嵌入 (Locally linear embedding-LLE)原理总结
  10. 【gdgzezoi】Problem A: Fairy