爱学习的老人家 发表于 2020-7-30 15:59:05

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

我是个小白。。。大神解释的时候麻烦说的具体点{:5_100:}
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
    df2 = df.iloc
    sjcha = df1 - df2#求时间差
    # sjcha = df.iloc.astype('datetime64') - df.iloc.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-30 15:59:44

自己顶下,求大神早日出现

疾风怪盗 发表于 2020-7-30 17:20:56

放点数据,或者上运行结果图片

爱学习的老人家 发表于 2020-7-31 13:12:09

疾风怪盗 发表于 2020-7-30 17:20
放点数据,或者上运行结果图片

新鱼友,传不了照片。。。。

爱学习的老人家 发表于 2020-7-31 13:15:40

爱学习的老人家 发表于 2020-7-31 13:12
新鱼友,传不了照片。。。。

程序跑的结果是对的,就是用print函数打印sjcha出来结果是对的,但是sjcha那一列写入到excel里变成了常数33

疾风怪盗 发表于 2020-7-31 16:20:08

是不是单元格属性的问题?你输出的时候看下是什么类型,数值型的类型,可能就会变化,建议还是全变成str再输出,然后单元格也格式化成文本
之前我输出有身份证号的数据,也是会出现问题

疾风怪盗 发表于 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}')# 保存文件
页: [1]
查看完整版本: python算出来的数据存到excel后变成了常数,代码如下