pandas追加写入数据

文章展示了如何利用Python的pandas库中的_df.append方法(在新版本中为_append)来合并两个数据集。首先创建了一个包含uid和name列的DataFrame,然后通过_append方法将新的数据追加到原始DataFrame中,设置ignore_index=True以重置索引。

前言

阅读本文约2分钟

方式

使用df对象的_append方法(老版本为append,新版本为_append)

示例

# -*- coding: utf-8 -*-
# @Author   : markadc

import pandas as pd

items = [{'uid': i, 'name': 'a_{}'.format(i)} for i in range(3)]
df = pd.DataFrame(items)
print('原始数据')
print(df)
print()


items = [{'uid': i, 'name': 'a_{}'.format(i)} for i in range(3, 5)]
df = df._append(items, ignore_index=True)
print('追加后的数据')
print(df)

在这里插入图片描述

向Excel文件追加数据可以通过`pandas`库结合`openpyxl`引擎实现。以下是几种常用的方法和示例代码,帮助实现数据追加写入。 ### 方法一:使用 `pd.ExcelWriter` 追加数据到指定工作表 可以利用`pandas.ExcelWriter`的`mode='a'`参数,将新的数据追加到现有工作表中。以下是一个示例函数,展示了如何实现这一功能: ```python import pandas as pd def write_excel_data_from_dict(file_path, sheet_name, data_dict): """ :param file_path: Excel文件路径 :param sheet_name: 工作表名 :param data_dict: 要写入数据,格式为{'列名1':值1,'列名2':值2} """ # 将字典转换为DataFrame df = pd.DataFrame(data_dict, index=[0]) # 尝试读取现有的Excel文件 try: existing_df = pd.read_excel(file_path, sheet_name=sheet_name) combined_df = pd.concat([existing_df, df], ignore_index=True) except Exception as e: # 如果工作表不存在,则直接使用新数据 combined_df = df # 将DataFrame写入到Excel文件的指定工作表中 with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer: combined_df.to_excel(writer, sheet_name=sheet_name, index=False) ``` ### 方法二:自定义函数 `append_df_to_excel` 以下是一个通用的函数,允许在指定的工作表和位置追加数据。可以通过参数指定工作表名、起始行等: ```python from openpyxl import load_workbook def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=0, truncate_sheet=False, **to_excel_kwargs): """ 将DataFrame追加到现有Excel文件的工作表中。 :param filename: Excel文件路径 :param df: 要追加的DataFrame :param sheet_name: 目标工作表名 :param startrow: 数据写入的起始行 :param truncate_sheet: 是否清空已有工作表内容 :param to_excel_kwargs: 其他to_excel参数 """ # 加载现有Excel文件 book = load_workbook(filename) with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer: # 如果工作表存在,则追加数据 if sheet_name in book.sheetnames: if truncate_sheet: # 清空工作表 writer.book.remove(writer.book[sheet_name]) writer.book.create_sheet(sheet_name) # 设置起始行 startrow = writer.sheets[sheet_name].max_row # 写入数据 df.to_excel(writer, sheet_name=sheet_name, startrow=startrow, index=False, **to_excel_kwargs) ``` ### 方法三:使用 `append()` 方法临时合并数据 如果仅需要在内存中将新数据追加到现有的DataFrame中,可以使用`DataFrame.append()`方法: ```python # 创建一个示例DataFrame df_existing = pd.DataFrame({'Name': ['Alice'], 'Physics': [85], 'Chemistry': [90], 'Algebra': [78]}) # 新增数据 new_row = {'Name': 'Max', 'Physics': 67, 'Chemistry': 92, 'Algebra': None} # 追加数据 df_updated = df_existing._append(new_row, ignore_index=True) ``` ### 注意事项 1. **依赖库安装**:需要安装`openpyxl`库以支持Excel文件的读写操作。可以通过以下命令安装: ```bash pip install openpyxl ``` 2. **文件路径**:确保文件路径正确,且文件未被其他程序占用。 3. **工作表名称**:目标工作表名称必须存在,否则会抛出异常,除非使用`truncate_sheet=True`清空工作表。 4. **性能优化**:对于大型数据集,建议避免频繁写入,可先将数据存储在内存中,再一次性写入文件。 ### 示例调用 ```python # 示例数据 data = {'列名1': '值1', '列名2': '值2'} write_excel_data_from_dict('example.xlsx', 'Sheet1', data) # 或者使用append_df_to_excel df = pd.DataFrame({'Name': ['Bob'], 'Physics': [88], 'Chemistry': [93], 'Algebra': [80]}) append_df_to_excel('example.xlsx', df, sheet_name='Sheet1', index=False) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值