【问题标题】:How to write data into separate cells in CSV via Python如何通过 Python 将数据写入 CSV 中的单独单元格
【发布时间】:2020-02-27 21:10:16
【问题描述】:

我正在尝试使用 python 向 csv 添加一些具有固定值的新列,但所有值都被压缩到一个单元格而不是单独的单元格中。如何解决这个问题?

我的python代码:

default_text = 'AoE'

with open('C:/Users/username/Desktop/Output/AoE_test.csv', 'r', newline='') as read_obj, \
        open('C:/Users/username/Desktop/Output/output_1.csv', 'w', newline='') as write_obj:
    csv_reader = reader(read_obj, delimiter=',')
    csv_writer = writer(write_obj, delimiter=',')
    for row in csv_reader:
        row.append(default_text)
        csv_writer.writerow(row)

这是代码从中读取数据的原始 CSV (AoE_test.csv):

这是用数据写入的 csv (output_1.csv) 的最终输出:

我也试过注释掉row.append()

    for row in csv_reader:
        # row.append(default_text)
        csv_writer.writerow((row, default_text))

和输出:

我希望将附加列写入 CSV 文件的单独列中。提前非常感谢!

【问题讨论】:

  • 在我看来,您正在创建一个新行,而不是在行尾添加数据。我也可能是错的,但看起来您的数据被封装在括号内,因此它可能被错误地读取/写入。您可以通过解析 csv 文件并使用文件处理程序将输出写入新文件,在行尾手动添加“、”和列数据。
  • default_text = 'AoE' with open('C:/Users/username/Desktop/Output/AoE_test.csv', 'r', newline='') as read_obj, \ open('C:/Users/username/Desktop/Output/output_1.csv', 'w', newline='') as write_obj: csv_reader = reader(read_obj, delimiter=',') csv_writer = writer(write_obj, delimiter=',') for row in csv_reader: row.append(default_text) csv_writer.writerow(row)
  • @an1que 在您的帖子中,而不是作为评论,这是不可读的。我们仍然会丢失数据。说到,除非绝对必要,否则请不要将信息作为图像共享。请参阅:meta.stackoverflow.com/questions/303812/…idownvotedbecau.se/imageofcodeidownvotedbecau.se/imageofanexception

标签: python csv


【解决方案1】:

处理表格时使用 pandas。你想做的正是这样:

# pip install pandas
import pandas as pd

default_text = 'AoE'

in_fpath = 'C:/Users/username/Desktop/Output/AoE_test.csv'
out_fpath = 'C:/Users/username/Desktop/Output/output_1.csv', 'w'
df = pd.read_csv(in_fpath, sep=",") # while sep="," is default
df['my_new_col'] = default_text # this works, because 
# pandas takes this one string and repeats it in column
# actually you should put [default_text] * df.shape[0]
# think columns as vertical lists!
df.to_csv(out_fpath)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多