我想将字典数据附加到现有的csv中,而不需要再写头。在
我试过了这一期的每一件事:append new row to old csv file python
我尝试了pandas和csv解决方案。在
try:
if os.path.isfile(csv_filepath) is False:
df = pandas.DataFrame.from_dict(dict_data, orient="index")
df.to_csv(csv_filepath)
else:
list_values = []
list_keys = []
for key, value in dict_data.items():
list_values.append(value)
list_keys.append(key)
with open(csv_filepath, 'a', newline='') as fd:
writer = csv.DictWriter(fd, fieldnames=list_keys)
writer.writerow(dict_data)
except Exception as e:
raise e
我也试过了
^{pr2}$但是删除和写入新数据都不需要附加。在
我还尝试在数据帧中加载两个csv,然后将第二个csv附加到第一个csv,但是它添加了两次头
编辑:
例如,我首先创建一个csv文件:{'toto':1,'tata':2,'titi':3}
然后我想附加创建的csv{'toto':2,'tata':1,'titi':5}
在这个操作之后,我希望在toto列中使用1和2,在tata列中使用2和1,在titi列中使用3和5。在
编辑2
我试过了:
df1 = pd.read_csv(csv_filepath)
df2 = pd.DataFrame(dict_data)
df3 = pd.concat([df1, df2], axis=0)
df3.to_csv(csv_filepath)
但我有一个错误消息:“错误标记数据。C错误:第20行应有2个字段,见9'
编辑3
list_keys = []
for key, value in dict_data.items():
list_keys.append(key)
with open(csv_filepath, 'a', newline='') as fd:
writer = csv.DictWriter(fd, fieldnames=list_keys)
writer.writerow([data['toto'], data['tata'], data['titi']])
我有一个错误消息:“list”对象没有属性“keys”
我想添加到一个现有的csv文件,数据从字典与相同的键。在
open(csv_filtepath, 'a')
方法有效;事实上,它只对我有效,没有截断。在请注意,您创建的是};前者接受列表,而不是dict。在
writer
,而不是{但是如果你要附加到一个现有的文件中,你必须显式地遵循它的列顺序,这样DictWriter就不能工作了。您必须执行如下操作,假设它是要附加到的文件的列顺序。在
知道列的顺序可能也很棘手。如果您不确定,您可以只读取第一个CSV文件的第一行(可能很大),如果该行包含列名。您可以使用普通的CSV阅读器:
^{pr2}$这就是你要找的吗
编辑:为您的例子节省内存的片段
^{pr2}$相关问题 更多 >
编程相关推荐