首页 > 解决方案 > 如何使用 pandas 以 csv 格式将每个数组存储在不同的列中?

问题描述

我一直在寻找这个,但我找到的所有答案都是二维数组。可以说我有以下不起作用的代码

import numpy as np 
import pandas as pd 

my_list=[]
def run:
    for i in range(500): 
       a = raw_data_get() # this brings in raw data as tuples such as (array([1.34, 1.3, 9.1]), array([3.2, 8.1, 7.3]))
       my_list.append(a)
    for i in range(len(my_list)):
       df = pd.DataFrame(my_list[i]).T
    df.to_csv('my_signals.csv', index=False)

我想将每个数组以 csv 格式存储在单独的列中。输出应如下所示:

col1  col2  col3  col4
1       2     3     4
2       2     3     4
3       2     3     4
4       2     3     4

如果我有 500 个阵列而不仅仅是四个阵列,我该如何解决同样的问题?所以我可以在csv中有几列?

col1  col2  col3  col4  .... etc
1       2     3     4
2       2     3     4
3       2     3     4
4       2     3     4

我正在使用python3.7

标签: python-3.x

解决方案


您在变量 a 中的数据嵌套在一个列表中太多。尝试a = [[1, 2, 3, 4], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]将其放入数据框中df = pd.DataFrame(a),然后将其转换为 .csvdf.to_csv(df)

或尝试:

import numpy as np 
import pandas as pd 

my_list=[]
for i in range(500):
       a = raw_data_get() # this brings in raw data as tuples such as (array([1.34, 1.3, 9.1]), array([3.2, 8.1, 7.3]))
       my_list.append(a)
flat_list = [item for sublist in my_list for item in sublist]
df = pd.DataFrame(flat_list).T
df.to_csv('my_signals.csv', index=False)

推荐阅读