繁体   English   中英

写在python中CSV文件的下一列

[英]Write in the next column of CSV file in python

我有一个简单的代码应该在两列中写入值,我希望结果显示为:0.48 2.71 但我只能写入行,如何在第二列中写入行(我想要罚款一列中的百分比和第二列中的“X”)? 非常感谢您的帮助。 这是代码:

import csv
finespacking = 0.55
d63fine= 2
coarsepacking= 0.6
d63coarse = 5
x=[]
percentage_fines_agg= [0.48,0.49,0.50,0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.60] 
rows = [[data] for data in x]
for item in percentage_fines_agg:
    with open ('tempmix.csv') as temp_mix_file:
        x= (item/(1-item))* (coarsepacking/finespacking)/(1-coarsepacking)
        writer= csv.writer(temp_mix_file)
        writer.writerows(rows)

您可以使用 pandas

  • 在 CMD 中:安装 pandas pip install pandas

然后在脚本中

      import pandas as pd
      df = pd.read_csv('tempmix.csv')
      for item in percentage_fines_agg:
          df["second_column_name"] = the_value_you_need_to_store

      # And if u want to save the new created file :
      df.to_csv("new_file_name.csv")

您将在工作目录中创建名为 new_file_name.csv 的新文件

如果您想在没有 Pandas 的情况下执行此操作,您可以执行以下操作:

import csv


finespacking = 0.55
coarsepacking = 0.6
factor = (coarsepacking / finespacking) / (1 - coarsepacking)
with open("tempmix.csv", "w", newline="") as out_file:
    csv_writer = csv.writer(out_file)
    for x in range(48, 60 + 1):
        x /= 100
        y = factor * x / (1 - x)
        csv_writer.writerow([x, y])

与您的代码段相比,主要修改是:

  • 在循环外打开文件
  • 在循环外实例化csv.writer()
  • 使用csv_writer.writerow()一次写入每一行
  • 该行包括来自percentage_fines_agg的值和从它计算的值

我还冒昧地介绍了以下非强制性但有用的修改:

  • 删除未使用的变量
  • 简化计算(在循环之外定义一个factor
  • 简化一些变量名
  • 动态生成percentage_fines_agg值。

如果要使用 Pandas,这样写起来就简单多了:

import pandas as pd


finespacking = 0.55
coarsepacking = 0.6
factor = (coarsepacking / finespacking) / (1 - coarsepacking)
df = pd.DataFrame(data=range(48, 60 + 1))
df[0] /= 100
df[1] = factor * df[0] / (1 - df[0])
df.to_csv("tempmix.csv", header=False, index=False)

在这两种情况下, tempmix.csv的内容如下:

0.48,2.517482517482517
0.49,2.620320855614973
0.5,2.727272727272727
0.51,2.8385899814471243
0.52,2.9545454545454546
0.53,3.0754352030947776
0.54,3.2015810276679844
0.55,3.3333333333333335
0.56,3.4710743801652897
0.57,3.6152219873150093
0.58,3.7662337662337655
0.59,3.9246119733924605
0.6,4.09090909090909

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM