鱼C论坛

 找回密码
 立即注册
查看: 1355|回复: 6

[已解决]python算出来的数据存到excel后变成了常数,代码如下

[复制链接]
发表于 2020-7-30 15:59:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我是个小白。。。大神解释的时候麻烦说的具体点
import pandas as pd
import time
start_time = time.time()

df = pd.read_excel('能量计算.xls',sheet_name=0,usecols=('采集时间','总电流(A)','总电压(V)'))
df = df.replace('无效数值','0')
df['总电流(A)'] = df['总电流(A)'].astype(float)
df['总电压(V)'] = df['总电压(V)'].astype(float)
power = df['总电流(A)'] * df['总电压(V)']/1000 #算出功率KW
df['功率'] = power #算的功率存到df里
df['采集时间'] = df['采集时间'].astype('datetime64')
num = len(df['采集时间'])
for i in range(1, num):
    df1 = df.iloc[i,0]
    df2 = df.iloc[i-1,0]
    sjcha = df1 - df2  #求时间差
    # sjcha = df.iloc[i,0].astype('datetime64') - df.iloc[i-1,0].astype('datetime64')
    # 这句话也不明白错在哪,为什么不能直接减?
    sjcha1 = sjcha.total_seconds()
    print (sjcha1) #打印出来的时间差是正确的
    eng = power * sjcha1/3600 #计算使用的时间差使用不是上面打印出来的时间差
    df['时间差'] = sjcha1  #存到df中发现这个时间差变成了常数33
    df['能量'] = eng
df.to_excel('chenjie.xls')

end_time = time.time()
print('程序运行的时间', (end_time-start_time))
最佳答案
2020-7-31 16:20:08
是不是单元格属性的问题?你输出的时候看下是什么类型,数值型的类型,可能就会变化,建议还是全变成str再输出,然后单元格也格式化成文本
之前我输出有身份证号的数据,也是会出现问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-30 15:59:44 | 显示全部楼层
自己顶下,求大神早日出现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-30 17:20:56 | 显示全部楼层
放点数据,或者上运行结果图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-31 13:12:09 | 显示全部楼层
疾风怪盗 发表于 2020-7-30 17:20
放点数据,或者上运行结果图片

新鱼友,传不了照片。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-31 13:15:40 | 显示全部楼层
爱学习的老人家 发表于 2020-7-31 13:12
新鱼友,传不了照片。。。。

程序跑的结果是对的,就是用print函数打印sjcha出来结果是对的,但是sjcha那一列写入到excel里变成了常数33
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 16:20:08 | 显示全部楼层    本楼为最佳答案   
是不是单元格属性的问题?你输出的时候看下是什么类型,数值型的类型,可能就会变化,建议还是全变成str再输出,然后单元格也格式化成文本
之前我输出有身份证号的数据,也是会出现问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 16:22:31 | 显示全部楼层
用下面这个代码把表格变成文本格式,写在to_excel下面,sjcha在to_excel前也astype(str)
def Set_excel_style(file_name):  #设置表格为文本格式
    wb = load_workbook(f'{file_name}')  # 打开文件
    ws = wb['Sheet1']  # 打开表格
    for row in ws.rows:  # 获取所有行
        for cell in row:  # 获取所有行中的每一个单元格
            cell.font = Font(name=u'微软雅黑', size=11)  # 设置字体
            cell.border = Border(left=Side(border_style="thin", color='000000'),
                                 right=Side(border_style="thin", color='000000'),
                                 top=Side(border_style="thin", color='000000'),
                                 bottom=Side(border_style="thin", color='000000'))  # 设置边框格式
            cell.alignment = Alignment(horizontal='center')  # 设置居中
            cell.number_format = '@'  # 设置为文本格式
    wb.save(f'{file_name}')  # 保存文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 17:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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