首页 > 解决方案 > 将展平数组写入 csv 文件

问题描述

我正在尝试将熊猫数据框中的值写入 csv 文件。示例代码如下。像平均值这样的计算,与 np.pi 相乘只是说明性的(实际工作会为某些参数生成 ndarrays)。

我的问题是扁平的 ndarray 被写入 csv 文件的同一行。我希望将它们写入单独的行,然后开始下一个参数的行。例如,在将 parameter2 的值写入行之后,写入 parameter3 的值。

谢谢

import pandas as pd
import numpy as np

data_list = []
parm_list = []
temp_dict = {}

# data 

for i in range(1000):
    n = np.random.randint(1,100)
    data_list.append(n)
data_array = np.array(data_list)

data = np.split(data_array,100)

# parameters
for i in range(10):
    parameter1 = np.mean(data[i])
    parameter2 = data[i].reshape(5,2)*np.pi
    parameter2_flat = parameter2.flatten()
    parameter3 = np.median(data[i])
       
    temp_dict = dict([('parameter1', parameter1), ('parameter2', parameter2_flat),('parameter3', parameter3)])
    parm_list.append(temp_dict)
parm_df = pd.DataFrame(parm_list)
transposed_df = parm_df.T
transposed_df.to_csv('parameter.csv')

运行此代码时的 transposed_df

代码运行时的 parameter.csv

在此输出中,参数 2 值被写入数据帧的同一行以及 csv 文件的同一行。我希望将参数 2 值写在另一个下方(即在数据框和 csv 文件的不同行中)。在写入所有参数 2 值之后,必须将参数 3 值写入下一行。

标签: pythonpandasexport-to-csv

解决方案


使用:

transposed_df.to_csv('parameter.csv', sep='\n')

在第 40 行


0
1
2
3
4
5
6
7
8
9
parameter1
49.6
32.9
58.7
50.1
32.2
35.2
44.7
52.8
50.1
53.3
parameter2
"[229.33626371  31.41592654 135.0884841  282.74333882 125.66370614
 263.8937829    6.28318531  34.55751919 172.78759595 276.46015352]"
"[201.06192983   3.14159265  75.39822369  72.25663103 116.23892818
 204.20352248  50.26548246  65.97344573 194.77874452  50.26548246]"
"[ 91.10618695  75.39822369  65.97344573 298.45130209 279.60174617
 179.07078125 216.7698931  144.51326207 191.63715187 301.59289474]"
"[128.8052988   12.56637061 113.09733553  37.69911184 238.76104167
 150.79644737 307.87608005 279.60174617 292.16811678  12.56637061]"
"[ 59.69026042 113.09733553  25.13274123  65.97344573  34.55751919
 282.74333882  78.53981634 153.93804003   3.14159265 194.77874452]"
"[241.90263433 185.35396656  43.98229715  56.54866776 282.74333882
  69.11503838 100.53096491  50.26548246  34.55751919  40.8407045 ]"
"[188.49555922 172.78759595 270.17696821 219.91148575  62.83185307
  78.53981634 179.07078125 157.07963268  72.25663103   3.14159265]"
"[270.17696821 144.51326207 175.9291886   62.83185307  12.56637061
 106.81415022 235.61944902 179.07078125 279.60174617 191.63715187]"
"[103.67255757  81.68140899 248.18581963 122.52211349 210.48670779
 282.74333882 219.91148575  87.9645943   69.11503838 147.65485472]"
"[ 94.24777961 295.30970944  78.53981634 219.91148575  75.39822369
  65.97344573 163.36281799 219.91148575 175.9291886  285.88493148]"
parameter3
49.0
23.5
59.0
44.5
23.0
20.0
52.5
56.5
43.0
54.0

使用时:

for i in transposed_df:
    print(transposed_df[i])
    transposed_df[i].to_csv('parameter_bis.csv',  mode='a', sep='\n')

而不是第 40 行

给出:


0
parameter1
47.9
parameter2
"[232.47785637 122.52211349 131.94689145 163.36281799 182.21237391
  62.83185307 160.22122533 125.66370614 122.52211349 201.06192983]"
parameter3
46.5

1
parameter1
62.2
parameter2
"[ 94.24777961 169.64600329 197.92033718 307.87608005 172.78759595
 223.0530784  276.46015352  37.69911184 185.35396656 289.02652413]"
parameter3
61.0

2
parameter1
51.9
parameter2
"[ 37.69911184 185.35396656  56.54866776 210.48670779 307.87608005
  91.10618695 182.21237391 251.32741229 251.32741229  56.54866776]"
parameter3
58.5

3
parameter1
63.6
parameter2
"[204.20352248 160.22122533 160.22122533 273.31856086 260.75219025
  62.83185307  59.69026042 235.61944902 301.59289474 279.60174617]"
parameter3
70.0

4
parameter1
58.2
parameter2
"[311.01767271  12.56637061 119.38052084 270.17696821  65.97344573
  12.56637061 238.76104167 276.46015352 229.33626371 292.16811678]"
parameter3
74.5

5
parameter1
32.5
parameter2
"[216.7698931  175.9291886   75.39822369  31.41592654  84.82300165
 109.95574288  15.70796327  31.41592654 172.78759595 106.81415022]"
parameter3
30.5

6
parameter1
51.4
parameter2
"[210.48670779  31.41592654 213.62830044 169.64600329   3.14159265
 301.59289474 282.74333882 204.20352248 131.94689145  65.97344573]"
parameter3
59.5

7
parameter1
45.1
parameter2
"[191.63715187 245.04422698 207.34511514 229.33626371  87.9645943
 131.94689145  62.83185307  28.27433388 182.21237391  50.26548246]"
parameter3
50.0

8
parameter1
61.5
parameter2
"[172.78759595 125.66370614 191.63715187 276.46015352 125.66370614
 307.87608005 257.61059759 298.45130209  97.38937226  78.53981634]"
parameter3
58.0

9
parameter1
52.5
parameter2
"[113.09733553  21.99114858 135.0884841  304.7344874  226.19467106
  21.99114858 179.07078125 263.8937829  273.31856086 109.95574288]"
parameter3
50.0

让我们知道它是否是您正在寻找的东西,我无法从您的问题中真正想象出所需的输出


推荐阅读