如何将新行附加到熊猫中的数据框?
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'])
它会给出这样的结果
【讨论】:
以上是关于如何将新行附加到熊猫中的数据框?的主要内容,如果未能解决你的问题,请参考以下文章
如何按 > 日期对一系列日期求和并将它们附加到熊猫新数据框中的新列?