python - 将展平数组写入 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')
在此输出中,参数 2 值被写入数据帧的同一行以及 csv 文件的同一行。我希望将参数 2 值写在另一个下方(即在数据框和 csv 文件的不同行中)。在写入所有参数 2 值之后,必须将参数 3 值写入下一行。
解决方案
使用:
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
让我们知道它是否是您正在寻找的东西,我无法从您的问题中真正想象出所需的输出
推荐阅读
- python - In what location do the files for Spyder in Anaconda need to be stored in order to be accessible?
- security - 什么是 Power Client 中央存储设施 (powerclientctf) 端口 2443
- javascript - 数组值编辑使所有值都相同
- operators - XNOR 是否有任何“模”等效表示?
- xml - XSLT 将嵌套的 xml 元素重写为一个带有逗号分隔值字符串的元素
- docker - 关于何时选择虚拟机或物理机而不是容器的指南
- java - 如何从 docker 环境变量中覆盖 java jar application.properties
- javascript - 有没有办法调试如何通过 Chrome 开发者工具设置 HTTP 标头?
- python - ModuleNotFoundError:没有名为“fontawesomefree”的模块
- python - 使用 xml.etree.ElementTree 解析一些元素的问题