【问题标题】:Adding list of numbers to existing csv将数字列表添加到现有 csv
【发布时间】:2019-06-12 22:05:27
【问题描述】:

我正在尝试将数字列表添加到现有的 csv 文件中。似乎应该很容易,但我无法获得正确的输出。例如,假设test.csv 有

0,0

1,1

2,2

3,3

4,4

和C=[0,1,2,3,4]

我想对与测试中的行数匹配的任何长度列表j 执行此操作。我希望test.csv 成为

0,0,0

1,1,1

2,2,2

3,3,3

4,4,4

感谢任何帮助。

感谢您的回复。

我尝试了以下方式:

将熊猫导入为 pd 将 numpy 导入为 np

导入数据

df = pd.read_csv('test.csv')

初始化列表

list_A = [0,1,2,3,4]

将列表更改为系列

series_A = pd.Series(list_A)

将系列另存为数据框列

df[1] = series_A.values

并收到了这样的问候:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 setitem 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/frame.py”,第 2299 行 self._set_item(键,值) _set_item 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/frame.py”,第 2366 行 值 = self._sanitize_column(键,值) _sanitize_column 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/frame.py”,第 2524 行 value = _sanitize_index(value, self.index, copy=False) _sanitize_index 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/series.py”,第 2741 行 raise ValueError('值的长度与'的长度不匹配' ValueError:值的长度与索引的长度不匹配

df[0] = series_A.values 回溯(最近一次通话最后): 文件“”,第 1 行,在 setitem 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/frame.py”,第 2299 行 self._set_item(键,值) _set_item 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/frame.py”,第 2366 行 值 = self._sanitize_column(键,值) _sanitize_column 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/frame.py”,第 2524 行 value = _sanitize_index(value, self.index, copy=False) _sanitize_index 中的文件“/usr/lib/python2.7/dist-packages/pandas/core/series.py”,第 2741 行 raise ValueError('值的长度与'的长度不匹配' ValueError:值的长度与索引的长度不匹配

【问题讨论】:

  • 请向我们提供完整的可重现代码,以便我们更好地为您提供帮助。
  • 将数据读入二维列表,将数据追加到该列表中,将该列表写入文件。您究竟在哪里遇到问题?
  • 不是刻薄,但您说您通常使用csv 包,但您不知道如何使用它编写东西?
  • 当您使用pandas 标记问​​题时,为什么要使用csv.reader 和savetxt?首先,使用 Pandas 可能会更好(更容易)。 savetxt 甚至是 NumPy,我根本没有看到它被提及。

标签: python pandas list csv


【解决方案1】:

使用Pandas 很容易做到这一点。

一般流程:

  • 将 CSV 文件作为 pandas DataFrame 读取。
  • 将列表更改为系列
  • 将系列附加到 DataFrame
  • 保存数据帧

编写代码:

import pandas as pd
import numpy as np

#import data
df = pd.read_csv('Your_Filename.csv')

#initialize list
list_A = np.arange(365)
list_B = np.arange(365)*2

#change list to series
series_A = pd.Series(list_A)
series_B = pd.Series(list_B) 

#save series as dataframe column
df['column_name_A'] = series_A.values
df['column_name_B'] = series_B.values

#save dataframe to csv
df.to_csv('output_filename.csv')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 2014-02-12
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2016-07-04
    • 2017-04-29
    相关资源
    最近更新 更多