【问题标题】: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

【问题讨论】:

    标签: python pandas csv dataframe


    【解决方案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'])
      

      它会给出这样的结果

      【讨论】:

        猜你喜欢
        • 2018-02-12
        • 2019-10-22
        • 2021-12-07
        • 2019-01-14
        • 2023-02-01
        • 2018-02-08
        • 2017-06-13
        • 2014-01-03
        • 1970-01-01
        相关资源
        最近更新 更多