Python 为什么熊猫坚持在CSV中写一行已经填好的内容

Python 为什么熊猫坚持在CSV中写一行已经填好的内容,python,pandas,csv,dictionary,Python,Pandas,Csv,Dictionary,这是我的CSV文件: name;sex;email paul;male;paul@gmail.com 然后我尝试将这两个用户添加到CSV: import pandas users = [ {'name': "john", 'sex' : 'male', 'email' : 'john@gmail.com'}, {'name': "yoko", 'sex' : 'female', 'email' : 'yoko@gmail.com'}

这是我的CSV文件:

name;sex;email
paul;male;paul@gmail.com
然后我尝试将这两个用户添加到CSV:

import pandas

users = [
    {'name': "john", 'sex' : 'male', 'email' : 'john@gmail.com'},
    {'name': "yoko", 'sex' : 'female', 'email' : 'yoko@gmail.com'}
    ]

df = pd.DataFrame(users)
df.to_csv('users.csv', sep=';', mode='a', header=False, index=False)
但熊猫坚持用保罗的话写约翰的信息:

name;sex;email
paul;male;paul@gmail.comjohn;male;john@gmail.com
yoko;female;yoko@gmail.com

为什么?我们怎么能给约翰自己的台词??请帮助我们

您要附加到的文件似乎没有换行符结尾,而且pandas在开始写入之前也没有插入换行符

在执行df.to_csv(…)之前,您可能会执行类似的操作:

以open('users.csv','a')作为f的
:
f、 写入('\n')

您要添加到的文件似乎没有换行符结尾,而且pandas在开始写入之前也没有插入换行符

在执行df.to_csv(…)之前,您可能会执行类似的操作:

以open('users.csv','a')作为f的
:
f、 写入('\n')

看起来您的原始CSV缺少最后一行末尾的尾随
\n
。为什么要使用熊猫?熊猫是必需的,我有一个庞大的数据库。我知道一个“\n”会解决这个问题,但是我恐怕有些DeFo的家伙会抛开空白。我想知道是否有更优雅的解决方案…您是否尝试将文件读入数据帧,然后添加新行,然后写回文件?看起来您必须对Pandas类、DataFrame或DataFrameRenderer或CSVFormatter进行子类化,然后滚动自己的文件。或者使用换行符创建io.StringIO对象,并将其传递给_csv,然后将其写入文件。如果您在代码中添加了关于删除新行添加的警告的注释,而其他开发人员仍然没有注意到该警告,则您的原因将丢失。看起来您的原始CSV缺少最后一行末尾的尾随
\n
。为什么要使用pandas?pandas是必需的,我有一个庞大的数据库。我知道一个“\n”会解决这个问题,但是我恐怕有些DeFo的家伙会抛开空白。我想知道是否有更优雅的解决方案…您是否尝试将文件读入数据帧,然后添加新行,然后写回文件?看起来您必须对Pandas类、DataFrame或DataFrameRenderer或CSVFormatter进行子类化,然后滚动自己的文件。或者使用换行符创建io.StringIO对象,并将其传递给_csv,然后将其写入文件。如果您在代码中添加了关于删除新行添加内容的警告,而其他开发人员仍然没有注意到该警告,那么您的原因将丢失。是的!这就是我现在使用的技巧。。。但我想知道是否有更优雅的解决方案,只使用熊猫。是的!这就是我现在使用的技巧。。。但我不知道是否有更优雅的解决方案,只使用熊猫。