【问题标题】:How to convert a multi dimensional list to numpy array and then write to a csv file如何将多维列表转换为 numpy 数组,然后写入 csv 文件
【发布时间】:2019-07-02 19:08:24
【问题描述】:

我正在 python 中使用 psycopg2 运行查询。查询结果保存到列表中。我正在尝试将此列表转换为 numpy 数组,然后写入 csv 文件。我是这样做的。

rows = rcursor.fetchall()
df = pd.DataFrame(np.array(rows), columns = rows("db1 db2 db3 db4 db5"))
df.to_csv('alldata.csv',sep=',')]

但是当我这样做时,我得到了错误:

ValueError: Must pass 2-d input

我想我必须应用 .reshape 但行数很大(比如 200000)。从查询获取到列表的数据如下所示。

RealDictRow([('db1', '0001'), ('db2', 002), ('db3', 003), ('db4', '004'), ('db5', 'Hello I worked on this so far but not happening. Call my number 245-456-7892)

如何在不出现 ValueError: Must pass 2-d input 的情况下正确地将其写入 csv。提前致谢!

【问题讨论】:

  • 您是否通过键入复制了该代码?这里面有太多的错误。 np.array(list) 最有可能是np.array(rows)"colname 4" 最有可能是"colname_4"。此外,在您的最后一个代码部分中,'Col2_name' 以大写字母开头,而其他的则不是。然后,'colname_2' 突然变成了'col2_name''col1_value''col4_value' 是字符串,而 col2_valuecol3_value 是变量。 col5_value 是一个字符串,但没有结尾。这些只是错别字。
  • 您在此处输入之前进行了一些编辑。我会纠正错别字。
  • 我在这里看到的唯一编程错误是list("colname_1 colname_2") 不是你想象的那样。它是['c', 'o', 'l', 'n', 'a', 'm', 'e', '_', '1', ' ', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '_', '2']。我想你想写的是["colname_1", "colname_2"]
  • 好吧,不要在这里输入,只需复制粘贴即可。如果您遇到无法将其识别为代码的问题,请在前后写上```或~~~。参考this
  • 你确定返回值是这样的,而不是RealDictRow({'col1_name': 'col1_value', 'col2_name': 'col2_value', 'col3_name': 'col3_value', 'col4_name': 'col4_value', 'col5_name': 'col5_value})

标签: python-3.x pandas dataframe psycopg2 numpy-ndarray


【解决方案1】:

您可以直接使用 pandas.read_sql_query 将 sql 查询 + 连接转换为数据框。例如,请参阅here

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 2023-02-01
    • 2015-08-07
    • 2015-08-18
    • 2019-01-29
    • 2020-03-24
    • 2011-12-04
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多