首页 > 解决方案 > 将 dict 从 CSV 附加到 Dataframe 正在删除值

问题描述

我正在尝试使用 pandas 将一些值附加到 CSV 文件中。问题是当我读取 CSV 并追加时,之前在 CSV 中的行被更改为 NaN。

我阅读了文件并打印了每一步以了解发生了什么,但我不能。

import pandas as pd
try:
    erro = pd.read_csv('C:\\TESTEPANDAS\\errot.csv', index_col=0,header=0)
except:
    erro = pd.DataFrame({'id':[],'cnj':[],'erro':[]})
print(erro)
erro.to_csv('C:\\TESTEPANDAS\\errot.csv',sep=';',index=False)

for i in range(5):
    erro = erro.append({'id':'id{}'.format(i),'cnj':'cnj{}'.format(i),'erro':'errotxt{}'.format(i)},ignore_index=True)

print(erro)
erro.to_csv('C:\\TESTEPANDAS\\errot.csv',sep=';',index=False)

当我尝试一次时,结果如下:

Empty DataFrame
Columns: [id, cnj, erro]
Index: []
    id   cnj      erro
0  id0  cnj0  errotxt0
1  id1  cnj1  errotxt1
2  id2  cnj2  errotxt2
3  id3  cnj3  errotxt3
4  id4  cnj4  errotxt4

如果我再试一次:

Empty DataFrame
Columns: []
Index: [id0;cnj0;errotxt0, id1;cnj1;errotxt1, id2;cnj2;errotxt2, id3;cnj3;errotxt3, id4;cnj4;errotxt4]
    cnj      erro   id
0   NaN       NaN  NaN
1   NaN       NaN  NaN
2   NaN       NaN  NaN
3   NaN       NaN  NaN
4   NaN       NaN  NaN
5  cnj0  errotxt0  id0
6  cnj1  errotxt1  id1
7  cnj2  errotxt2  id2
8  cnj3  errotxt3  id3
9  cnj4  errotxt4  id4

标签: pandascsvdataframeappend

解决方案


写入和读取 csv 的参数不匹配。查看第二个输出的索引 - 读取 csv 失败,因为没有给出分隔符:

Index: [id0;cnj0;errotxt0, id1;cnj1;errotxt1...

读取命令应该是:

erro = pd.read_csv('C:\\TESTEPANDAS\\errot.csv', sep=";")

然后你会取回你在上一次迭代中保存的同一个对象。


推荐阅读