如何将完整DataFrame转换为单列并插入至数据表?
实现将DataFrame转换为带日期的批量加载记录结构
实现思路
核心是将目标DataFrame的列名列表与行数据列表拼接,作为新DataFrame中Bulk_load列的值,同时为每条记录指定对应的Insert_date。
代码实现
1. 构造原始DataFrame
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ 'A': [1, 4], 'B': [2, 5], 'C': [2, 5], 'D': [3, 6] })
2. 生成目标结构的DataFrame
直接构造包含日期和批量数据的字典列表,再转换为DataFrame:
# 准备每条记录的数据 bulk_records = [ { 'Insert_date': '09-09-2022', 'Bulk_load': [df.columns.tolist()] + df.values.tolist() }, { 'Insert_date': '10-09-2022', # 示例新DataFrame对应的批量数据 'Bulk_load': [['Q', 'Z', 'R', 'F']] + [[1, 2, 2, 3], [4, 5, 5, 6]] } ] # 转换为目标DataFrame result_df = pd.DataFrame(bulk_records)
3. 输出效果
执行后result_df的内容如下:
Insert_date Bulk_load 0 09-09-2022 [[A, B, C, D], [1, 2, 2, 3], [4, 5, 5, 6]] 1 10-09-2022 [[Q, Z, R, F], [1, 2, 2, 3], [4, 5, 5, 6]]
4. 批量处理优化
如果需要处理多个日期对应的不同DataFrame,可以封装成函数批量生成记录:
def generate_bulk_record(date_str, input_df): """将单个DataFrame转换为带日期的批量记录""" return { 'Insert_date': date_str, 'Bulk_load': [input_df.columns.tolist()] + input_df.values.tolist() } # 示例:处理另一个新的DataFrame new_df = pd.DataFrame({ 'Q': [1, 4], 'Z': [2, 5], 'R': [2, 5], 'F': [3, 6] }) # 批量生成所有记录 records = [ generate_bulk_record('09-09-2022', df), generate_bulk_record('10-09-2022', new_df) ] result_df = pd.DataFrame(records)
内容的提问来源于stack exchange,提问作者razs
相关产品推荐
相关产品推荐

