如何向CSV存储的DataFrame追加单值并实现左索引右值结构
完整修改后代码
import pandas as pd import os user_name = "Tal" number_of_used_guesses = 2 path = "/users/me/folder_name/" # 拼接完整的文件存储路径,避免文件存错位置 filename = os.path.join(path, f"{user_name}.csv") if os.path.exists(filename): # 读取现有文件获取已有最大索引,保证新索引连续 existing_df = pd.read_csv(filename, index_col=0) new_index = existing_df.index.max() + 1 if len(existing_df) > 0 else 0 # 构造单条数据的DataFrame,指定列名和新索引 new_df = pd.DataFrame( {"used_guesses": [number_of_used_guesses]}, index=[new_index] ) # 追加模式写入,保留索引,不重复写入表头 new_df.to_csv(filename, mode='a', index=True, header=False) else: # 首次创建文件,索引从0开始,写入表头 new_df = pd.DataFrame( {"used_guesses": [number_of_used_guesses]}, index=[0] ) new_df.to_csv(filename, mode='w', index=True, header=True)
核心修改点
- 修复DataFrame构造逻辑:将单个数值封装为列表并指定列名,解决标量无法生成DataFrame、列错位的问题
- 调整索引生成规则:文件存在时先读取已有数据的最大索引,新行索引自动+1,实现全局连续不重复的索引
- 修改
to_csv参数:将index=False改为index=True,输出左列索引 - 优化路径拼接:用
os.path.join拼接路径与文件名,避免路径格式错误 - 控制表头写入逻辑:仅首次创建文件时写入表头,追加时跳过,避免表头穿插在数据中
输出CSV效果
最终生成的CSV格式如下,左列为全局自增索引,右列为对应数值:
,used_guesses 0,2 1,3 2,7
内容的提问来源于stack exchange,提问作者Tal
相关产品推荐
相关产品推荐

