如何将新行附加到熊猫中的数据框?

Posted

技术标签:

【中文标题】如何将新行附加到熊猫中的数据框?【英文标题】:How to append new row to dataframe in pandas? 【发布时间】:2018-09-29 16:18:20 【问题描述】:

这是我使用的代码:

iname = "name1"    
ipassword = "password1"
iemail = "email@domain.com"
res1 = []
df = pd.read_csv("login.csv", sep=',', encoding="utf-8")
res1.append(iname,ipassword,iemail)
print(res1,res2,res3)
df.to_csv("login.csv", index=False)

如何使用pandas数据框将姓名、密码和邮箱存入csv文件?

login.csv:

name     password     email
admin    admin        asdfs
zds      sd           dsssfsfd
vipul    rao          dsfdsfs

【问题讨论】:

【参考方案1】:

另一种简单的方法是使用pd.Dataframe.loc 方法。

row = [iname, ipassword, iemail]
df.loc[len(df)] = row
df.to_csv("login.csv", index=False)

【讨论】:

嗨。这确实是一个简洁的答案。我只是想知道为什么df.iloc[len(df)]=row 在这种情况下不起作用? @RaghavKumar 设计决策,iloc cannot enlarge its target object,但loc 可以 @smcs 放大目标对象是什么意思? @Connor 目标对象为数据框,添加新行后比之前大,具体取决于列数。 @smcs 非常感谢!类似的东西的效率是多少?使用 loc 扩大数组或先制作字典之类的东西更快吗?【参考方案2】:

使用 -

iname = "name1"    
ipassword = "password1"
iemail = "email@domain.com"

df2 = df.append(pd.DataFrame([[iname,ipassword,iemail]], columns
=df.columns))
df2.to_csv("login.csv", index=False)

输出

    name   password             email
0  admin      admin             asdfs
1    zds         sd          dsssfsfd
2  vipul        rao           dsfdsfs
0  name1  password1  email@domain.com

【讨论】:

这只是一个例子,但它是一个用户输入,所以它必须是一个变量 @vipul-rao 我已包含更新的变量并请检查。如果您想append 多行,这也将支持【参考方案3】:

您可以使用pd.DataFrame.loc 向您的数据框添加一行:

iname = "name1"    
ipassword = "password1"
iemail = "email@domain.com"

df = pd.read_csv("login.csv", sep=',', encoding="utf-8")

df.loc[df.index.max()+1] = [iname, ipassword, iemail]

df.to_csv("login.csv", index=False)

【讨论】:

【参考方案4】:

一个好方法是先创建一个空列表,填充它,然后像这样添加到空数据框中

data=[]

for i, row in new_df.head(4).iterrows():
    sequence=str(row['body'])
    author=row['author']
    data.append([author,sequence]) 
d=pd.DataFrame(data,columns = ['author', 'results'])

它会给出这样的结果

【讨论】:

以上是关于如何将新行附加到熊猫中的数据框?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文本文件中的原始数据加载到熊猫数据框中?

将熊猫数据框单元格中的字典解析为新行单元格(新列)

如何按 > 日期对一系列日期求和并将它们附加到熊猫新数据框中的新列?

如何通过在两行之间划分特定列中的值并保持其他列不变来在熊猫数据框中创建新行?

附加到熊猫数据框中的列表

如何在 for 循环中附加熊猫数据框中的行?