【问题标题】:Add a vector as a new column in a csv file in python在python的csv文件中添加一个向量作为新列
【发布时间】:2018-07-31 05:36:23
【问题描述】:

我在 python 中有一个 for 循环,在每个步骤结束时,我希望将输出添加为 csv 文件中的新列。我的输出是一个 40x1 数组。因此,如果 for 循环由 100 个步骤组成,我希望最后有一个 100 列和 40 行的 csv 文件。我现在拥有的,在每个时间步的末尾如下:

    with open( 'File name.csv','w') as output:
               writer=csv.writer(output, lineterminator='\n')
               for val in myvector:
                      writer.writerow([val])

但是,这会创建不同的 csv 文件,每个文件有 40 行和 1 列。如何将它们全部添加为同一个 csv 文件中的不同列?这将为我节省大量的计算时间,因此非常感谢任何帮助。

【问题讨论】:

标签: python pandas csv


【解决方案1】:

您需要将每一列单独写入文件吗?如果没有,我会将所有数据存储在 DataFrame 中,然后将 DataFrame 一次性写入 CSV 文件。您应该能够复制并粘贴此示例并在更改文件名后运行它。

import pandas as pd

# Sample column data (ints 0 through 39)
my_vector = range(0, 40)

# Set up empty DataFrame
data = pd.DataFrame({'Column_1' : []})

for i in range(0, 100):
    # Set the ith column equal to the column data we have
    data['Column_' + str(i)] = my_vector

data.to_csv('File name.csv', index=False, header=False)

【讨论】:

    【解决方案2】:

    仅仅因为您的 OP 中没有明确说明,我会在两种情况下打破我的答案:

    1. myvector 是列表列表

    取自这里:Rotating a two-dimensional array in Python

        with open( 'File name.csv','w') as output:
                   writer=csv.writer(output, lineterminator='\n')
                   for val in list(zip(*myvector[::-1])):
                          writer.writerow(val)
    

    2。 myvector 是一个数据帧:

        with open( 'File name.csv','w') as output:
                   writer=csv.writer(output, lineterminator='\n')
                   for val in myvector.transpose():
                          writer.writerow(val)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2017-08-20
      • 2020-01-04
      相关资源
      最近更新 更多