下面的代码旨在将[Val1, Val2, Val3, Val4]
迭代到csv文件中。它将每次迭代保存为带有dataframe.to_csv("sales.csv", index=False, mode='a', header=False)
代码的csv代码。然而,该代码为每个Val
值制作了一个单独的行,如Ouput
中所示。我想让val1-4
在每次迭代中逐行打印。我怎么能那样做才能拿到Expected output
呢。作为结果。
from numpy import random
import pandas
Values = random.randint(100, size=(100000))
Number_array = random.randint(100, size=(1000))
for n in range(len(Values)):
val1 = np.sum(Number_array) + Values[n] * len(Number_array)
val2 = np.sum([Number_array])
val3 = val1 * val2
val4 = n * 2
data =[Val1, Val2, Val3, Val4]
dataframe = pandas.DataFrame(data)
dataframe.to_csv("input.csv", index=False, mode='a', header=False)
input.csv
文件:
Val1, Val2, Val3, Val4
输出:
Val1, Val2, Val3, Val4
49793
48793
-1865417447
0
82793
48793
-255248447
2
预期输出
Val1, Val2, Val3, Val4
49793,48793, -1865417447, 0
82793, 48793, -255248447, 2
查看此代码:
l = []
for n in range(len(Values)):
val1 = np.sum(Number_array) + Values[n] * len(Number_array)
val2 = np.sum([Number_array])
val3 = val1 * val2
val4 = n * 2
data =[val1, val2, val3, val4]
# dataframe = pandas.DataFrame([data])
l.append(data)
dataframe = pandas.DataFrame(l)
dataframe.to_csv("input.csv", index=False, mode='a', header=False)
方法-2如果你想使用@anky用户评论,你必须在len(Values)
查看len
,这是关于100k
的,我们在每个iteration
处理dataframe and file
,这需要很多时间,然后将其附加到list
,然后添加到file
,因为这里file-process
只是one step
只需更改:
dataframe = pandas.DataFrame(data)
到:
dataframe = pandas.DataFrame([data])
时间消耗分析
1st-case:
0.38395023345947266 s ± 15.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
2nd-case:
350.7548952102661 s ± 15.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
这是因为您的dataframe
看起来像
>>data
[1, 2, 3, 4]
>>dataframe = pd.DataFrame(data)
>>dataframe
0
0 1
1 2
2 3
3 4
你只需要Transpose
数据帧就可以得到你想要的格式
>>dataframe.T
0 1 2 3
0 1 2 3 4
或者您可以只将数据nest
list
list
作为:
>>dataframe = pd.DataFrame([data])
>>dataframe
0 1 2 3
0 1 2 3 4