如何使用Pandas向DataFrame追加新行并将数据存入CSV文件?
解答你的两个Pandas操作问题
嘿,我来帮你搞定这两个和Pandas、CSV文件相关的问题~
问题1:如何使用Pandas向DataFrame追加新行?
先揪出你代码里的小问题:res1.append(iname,ipassword,iemail)这行写法不对,append()方法只能接收一个参数,你得把三个字段打包成列表或者元组才行。而且你最后直接保存原df,根本没把新行加进去呀😅。
给你修正并优化后的代码,还考虑了文件不存在的情况:
import pandas as pd iname = "name1" ipassword = "password1" iemail = "email@domain.com" # 读取现有CSV,文件不存在就创建空DataFrame try: # 注意!你的login.csv用的是空格分隔,不是逗号,所以sep要改成'\s+' df = pd.read_csv("login.csv", sep='\s+', encoding="utf-8") except FileNotFoundError: # 文件不存在时,先定义好列名创建空表 df = pd.DataFrame(columns=["name", "password", "email"]) # 准备要追加的新行,用字典对应列名更清晰 new_row = {"name": iname, "password": ipassword, "email": iemail} # 用pd.concat合并原表和新行(Pandas 2.0+已经弃用append,concat更稳定) df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True) # 保存回CSV,不要索引列 df.to_csv("login.csv", index=False)
问题2:如何使用Pandas DataFrame将姓名、密码和邮箱信息存入login.csv文件?
分两种场景处理:
场景1:创建新的login.csv文件
如果文件还不存在,直接把数据转成DataFrame再保存:
import pandas as pd # 准备数据,用字典列表能清晰对应列名 data = [ {"name": "admin", "password": "admin", "email": "asdfs"}, {"name": "zds", "password": "sd", "email": "dsssfsfd"}, {"name": "vipul", "password": "rao", "email": "dsfdsfs"} ] # 转成DataFrame df = pd.DataFrame(data) # 保存到CSV,不要生成索引列 df.to_csv("login.csv", index=False)
场景2:在现有login.csv里追加数据
这就和问题1的处理逻辑一致啦,用pd.concat把新数据合并到原DataFrame后再保存。记得处理文件不存在的情况,还有注意原文件的分隔符——你的原login.csv是用空格分隔的,不是逗号,读取时一定要把sep参数设为'\s+'或者delim_whitespace=True,不然会把整行当成一个列哦!
内容的提问来源于stack exchange,提问作者vipul-rao
相关产品推荐
相关产品推荐

