panda对于EXCEL单元赋值如何能够设置string?

举报
tsinghuazhuoqing 发表于 2021/12/26 23:45:30 2021/12/26
【摘要】   ➤01 PANDAS 1.问题现象 在使用pandas对EXCEL文件进行操作时,经常会碰到如下如下的出错信息: Traceback (most recent call la...

 

01 PANDAS


1.问题现象

在使用pandas对EXCEL文件进行操作时,经常会碰到如下如下的出错信息:

Traceback (most recent call last):
  File "d:\temp\TEMP0002\test.PY", line 16, in <module>
    ef.at[0, 'HW3'] = 'Hello'
  File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 2287, in __setitem__
    self.obj._set_value(*key, takeable=self._takeable)
  File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2815, in _set_value
    engine.set_value(series._values, index, value)
  File "pandas/_libs/index.pyx", line 95, in pandas._libs.index.IndexEngine.set_value
  File "pandas/_libs/index.pyx", line 106, in pandas._libs.index.IndexEngine.set_value
ValueError: could not convert string to float: 'Hello'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

下面是对应的代码:

ef = pd.read_excel(tshfile, sheet_name='Homework')
ef.at[0, 'HW2'] = 'Hello'

  
 
  • 1
  • 2

2.现象分析

其中将Excel某一单元的值,重新赋值为“string”的时候,就会出现前面的ValueError: Could not convert string to float:"Hello"的错误。

但是,如果之前对于某个单元赋值为String, 重新赋值为数值,则不会出现这个错误。

 

02 解决方法


利用pandas中的astype来对于某一列的属性进行修正。在下面代码中,首先通过对于HW3这一列转换成 string, 然后再进行幅值,则可以避免出现上面的取值出错的问题。

ef['HW3'] = ef['HW3'].astype(str)
ef.at[0, 'HW3'] = 'Hello'

  
 
  • 1
  • 2
            学号   姓名   HW1   HW2    HW3
0   2020210975  熊琦珞  88.0  88.0  Hello
1   2020210993  代发安   NaN   NaN    nan
2   2020211070  张云来   NaN   NaN    nan
3   2020211100   阮冶   NaN   NaN    nan
4   2020211152  姜铭巍   NaN   NaN    nan
5   2020211164  李凯望   NaN   NaN    nan
6   2020310898  宋嘉昊   NaN   NaN    nan
7   2020213895   毛帆   NaN   NaN    nan
8   2020310675  饶世杰   NaN   NaN    nan
9    P20109001  李振宇   NaN   NaN    nan
10   P20109004  张童禹   NaN   NaN    nan
11   P20109009  李雨来   NaN   NaN    nan
12   P20109010   贾于   NaN   NaN    nan
13  2018310903  饶永铭   NaN   NaN    nan
14  2019211372  周恩光   NaN   NaN    nan
15  2020211172  张豪杰   NaN   NaN    nan
16  2020213828  苗润发   NaN   NaN    nan
17  2020215196  刘佳文   NaN   NaN    nan
18  2020215228  毛治齐   NaN   NaN    nan
19  2020215231   李洋   NaN   NaN    nan
20  2020215229  王紫颐   NaN   NaN    nan
21  2020210891  智佩渊   NaN   NaN    nan
22  2020310735   董颖   NaN   NaN    nan
23  2019310950  谭子萌   NaN   NaN    nan
24  2019310972   沈帅   NaN   NaN    nan
25  2020210250  于秋爽   NaN   NaN    nan
26  2020210995  黄思超   NaN   NaN    nan
27  2020211189   张桀   NaN   NaN    nan
28  2020211191  徐子豪   NaN   NaN    nan
29  2020310855  邓瑞亮   NaN   NaN    nan

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

 

※ 附件


#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST.PY                      -- by Dr. ZhuoQing 2020-12-31
#
# Note:
#============================================================

from head import *
import pandas as pd

tshfile = r'D:\Temp\学生信息-TSH.xls'

ef = pd.read_excel(tshfile, sheet_name='Homework')
ef['HW3'] = ef['HW3'].astype(str)
ef.at[0, 'HW3'] = 'Hello'

ef.to_excel(tshfile, sheet_name='Homework', index=False)
printf(ef)

#------------------------------------------------------------
#        END OF FILE : TEST.PY
#============================================================

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/112004963

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。