Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何读取Excel电子表格并转换单位?_Python_Excel_Converters - Fatal编程技术网

Python 如何读取Excel电子表格并转换单位?

Python 如何读取Excel电子表格并转换单位?,python,excel,converters,Python,Excel,Converters,我有一个excel电子表格,我想使用python将测量值从cm3/天转换为cm3/年 有办法做到这一点吗? 我主要研究了openpyxl,因为这个模块似乎最适合excel编辑,但我想我最困惑的是如何编辑单元,使它们都是相同的。。。我似乎找不到一个模块来支持我正在尝试的操作。如果文件是“*.xlsx”格式的,您可以像这样用python读取文件: #首先导入必要的软件包 作为pd进口熊猫 将numpy作为np导入 数据=pd.read\u excel(文件名) 如果采用“*.csv”格式,请执行以

我有一个excel电子表格,我想使用python将测量值从cm3/天转换为cm3/年

有办法做到这一点吗? 我主要研究了openpyxl,因为这个模块似乎最适合excel编辑,但我想我最困惑的是如何编辑单元,使它们都是相同的。。。我似乎找不到一个模块来支持我正在尝试的操作。

如果文件是“*.xlsx”格式的,您可以像这样用python读取文件:

#首先导入必要的软件包
作为pd进口熊猫
将numpy作为np导入
数据=pd.read\u excel(文件名)
如果采用“*.csv”格式,请执行以下操作:

#首先导入必要的软件包
作为pd进口熊猫
将numpy作为np导入
数据=pd.read\u csv(文件名)
要在列上执行计算(cm3/天/秒——我不知道这种格式,但是如果您有cm3/天,您可以通过下面的代码将其转换为yo cm3/年)

#首先检查列的类型
数据[“列”]。数据类型
#根据你得到的类型
#如果列的数据类型为字符串
#将其转换为整数
数据[“列名称”]=数据[“列名称”]。aType(int)
#将其转换为float
数据[“列名称”]=数据[“列名称”]。aType(浮点)
#如果您的列已经是数字类型,请不要更改它
#将cm3/天转换为cm3/年
数据[“列名称”]=数据[“列名称”]*365

PS:我看不到链接的图像,因此无法使用excel工作表中的有效列名

您可以使用pandas轻松做到这一点。您可能需要安装xlrd:
pip3安装xlrd

或者将文件保存为csv

将熊猫作为pd导入
#使用Read_csv()或Read_excel()读取文件
df=pd.read_excel('your_file.xlsx',index_col=0)#您的索引是第一列
>>>df
量
precip
1立方厘米/天45
2立方厘米/天132
3 cm3/年9565
4立方厘米/秒5
5立方厘米/天67
6立方厘米/天52
7立方厘米/秒2
8立方厘米/天78
9立方厘米/秒3
10立方厘米/天92
然后可以使用apply()检查和更新所需的值。这将对选项axis=1的pd.DataFrame的每一行应用任何函数。应用函数接收一行数据作为pd.Series对象。
让我们定义一个函数:

def\u更新(系列):
val=系列['amount']#原始值
体积,时间=系列['measure'].分割('/')#时间单位
#检查并更新
如果时间=‘年’:
返回序列
elif时间==“天”:
系列['amount']=val*365
elif时间==“小时”:
系列['amount']=val*24*365
elif时间==“秒”:
系列['amount']=val*3600*24*365
#更新度量值列
系列['measure']=“cm3/年”
返回序列
然后应用该函数:

new_df=df.apply(_update,axis=1)
>>>新德里
量
precip
1立方厘米/年16425
2 cm3/年48180
3 cm3/年9565
4 cm3/年157680000
5 cm3/年24455
6立方厘米/年18980
7 cm3/年63072000
8立方厘米/年28470
9 cm3/年94608000
10 cm3/年33580
#保存新文件:
新建文档到excel('new\u file.xlsx')

希望这会有帮助

嗨,谢谢你的回复!抱歉,我的帖子有点不清楚,我的意思是记录显示cm3/天和cm3/秒,我想将它们全部转换为cm3/年。我尝试重新添加图像,希望它现在可见。@avocado23如果列值以cm3/天为单位,则可以将列与365相乘(如上面的代码),它将为您提供cm3/年。我这边的图片的问题是我住的地方imgur被阻止了:/也许你可以使用这个网站()上传你的图片并将其转换成一个链接,然后你可以像这样将你的图片添加到你的问题中:![图像名称](从网站获得的图像链接)。若要上载图像,请单击概述浏览笔记本电脑中的图像,然后单击“立即上载”。您将获得许多链接,但可以使用第一个链接)。您可以将列读取为字符串,并将“cm3/sec”替换为“cm3/year”。您能发布错误吗?我猜这是因为您的度量列(您必须检查与此字段相关的所有内容,您可能需要str.strip();我的意思是错误可能是“if time==”。。。