问题遇到的现象和发生背景
1.将q写入dataframe的时侯结果怎么变成[1,3]的形式,第二个截图中可以看到写入的是[1,[3]]
2.将dataframe保存到csv文件里的时候,为什么会出现[1, array([3.])](如图3),怎么才能出现[1,3]
问题相关代码,请勿粘贴截图
import numpy as np
import pandas as pd
import csv
from pandas import DataFrame
data = pd.read_csv("C:/Users/DELL/Desktop/dt3.csv", header=0, usecols=['v'])
data = np.array(data)
T=[] #定义为列表
V=0 #初始成交量
h=0
h=[]
τ=[]
A=326881602 #每个交易篮子的交易量
for i in range(len(data)):
V=V+data[i] #迭代,成交量=上一时刻成交量+这一时刻的成交量
k=np.ceil(V/A) #对篮子数向上取整
T.append(k)
T[i]=k #第i时刻所需要的篮子数
h.append(0)
h[i]=0
if np.ceil(V/A)-V/A==0: #篮子数为整数
h.append(1)
h[i]=1 # p[i]=1#如果篮子数为整数,那么下一时刻从新的交易篮子开始填充
τ.append(T[i])
τ[0]=[1,T[0]] #第一个时刻对应的篮子编号
for i in range(len(data)):
if i>=1:
τ[i] = [T[i - 1] + h[i - 1], T[i]]
#将q写入dataframe
filepath = 'C:/Users/DELL/Desktop/dt3.csv'
dataheader = ['date','time','v','p','cum']
data_original = pd.read_csv(filepath, sep=',' ,header=0, names=dataheader, skip_blank_lines=True)
print(data_original)
# data_original['q']=list(q)#也可行
data_original['τ']=τ #添加一列τ,赋值为列表(d),打印
print(data_original)
#完成写入
t=data_original['τ']
#保存
sourceFile='C:/Users/DELL/Desktop/dt3.csv' #person.csv包括id,name,age三个列
df=pd.read_csv(sourceFile,low_memory=False) #读取csv,设置low_memory=False防止内存不够时报警告
df['a']=list(t)
# df['a']='company'#增加新的列company
#以下保存指定的列到新的csv文件,index=0表示不为每一行自动编号,header=1表示行首有字段名称
df.to_csv('C:/Users/DELL/Desktop/dt3.csv',columns=['date','time','v','p','cum','a'],index=0,header=1)
运行结果及报错内容
图1是原文件,图2是新增了τ这一列的结果,图3是将dataframe写入csv以后的结果
我的解答思路和尝试过的方法
我想要达到的结果
将图2[1,[3]]改成[1,3]。
将图3的[1, array([3.])]换成[1,3]