python - 使用一个标准(从开尔文到摄氏度)替换csv中特定列中的一些值。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python - 使用一个标准(从开尔文到摄氏度)替换csv中特定列中的一些值。相关的知识,希望对你有一定的参考价值。

在同一列中,我们有开尔文和摄氏的温度数据。我怎样才能建立一个新的列,其中我有相同类型的日期(开尔文或摄氏度).我有很多数据在csv格式.我试图使用这样的东西:if initial_temperature > 50写new_temperature。我有很多数据在csv格式.我试图使用类似的东西:如果初始_temperature > 50写new_temperature = initial_temperature - 273.15,我想,我们不能有一个温度在摄氏度高于50。

Input_data =[37, 309.15, 38, 310.5]
Output_data = [37, 36, 38, 37.35] 

谢谢你的建议

答案

如果你有你的数据在csv文件中的一列像这样。

input_data. csv

37
309.15
38
310.5

然后你就可以从文件中逐行读取这些数据,并将其保存到另一个带有附加列的文件中。

import csv

with open('input_data.csv') as file:
    reader = csv.reader(file)
    output_file = open('output_data.csv', 'w')
    writer = csv.writer(output_file)
    for row in reader:
        row_values = []
        if float(row[0]) > 50:
            row_values.append(float(row[0]))  # Column A
            row_values.append(round(float(row[0]) - 273.15, 2))  # Column B
            writer.writerow(row_values)
        else:
            row_values.append(float(row[0]))  # Column A
            row_values.append(float(row[0]))  # Column B
            writer.writerow(row_values)
    output_file.close()

在另一个文件中输出。

output_data.csv

37.0,37.0
309.15,36.0
38.0,38.0
310.5,37.35
另一答案

如果你只有值的列表,你可以使用列表理解来获得结果。

>>> Input_data =[37, 309.15, 38, 310.5]
>>> Output_data = [round((x - 273.15),2) if x > 50 else x for x in Input_data]
>>> Output_data
[37, 36.0, 38, 37.35]

既然你提到了列,我想你有某种数据框架。对于pandas的数据框架,你可以使用lambda函数。

>>> import pandas as pd
>>> df = pd.DataFrame('Input_data':[37, 309.15, 38, 310.5])
>>> df
   Input_data
0       37.00
1      309.15
2       38.00
3      310.50
>>> df['Output_data'] = df['Input_data'].apply(lambda x: x - 273.15 if x > 50 else x)
>>> df
   Input_data  Output_data
0       37.00        37.00
1      309.15        36.00
2       38.00        38.00
3      310.50        37.35

对于numpy数组,它是这样的:

>>> import numpy as np
>>> x = np.array([37, 309.15, 38, 310.5])
>>> x
array([ 37.  , 309.15,  38.  , 310.5 ])
>>>
>>> y = np.where(x > 50, x - 273.15, x)
>>> y
array([37.  , 36.  , 38.  , 37.35])

以上是关于python - 使用一个标准(从开尔文到摄氏度)替换csv中特定列中的一些值。的主要内容,如果未能解决你的问题,请参考以下文章

油浸式变压器绕组温升限值为65K,k是啥意思

空气的比热容比是多少

SQL数据库中的维度和单元分析

在变压器温度描述中:工作温度是105度,最高温升应小于60K 其中60K是啥意思?60K是怎么计算出来的?谢谢

NTC 热敏电阻温度计算公式

python学习笔记 温度转换