登录
首页 >  文章 >  python教程

PythonPandas:合并长列表到DataFrame教程

时间:2025-11-21 20:51:44 145浏览 收藏

本文详细介绍了如何利用Python Pandas库和`itertools.zip_longest`,高效地将变长列表数据整合到DataFrame中,实现新列或新行数据的添加。针对直接赋值可能引发的性能碎片化警告,教程提供了一种基于字典构建和DataFrame拼接的优化方案。文章首先阐述了在数据分析中整合变长列表数据的常见挑战,如数据对齐问题和性能警告。随后,通过示例代码,演示了如何运用`zip_longest`进行数据填充,并通过构建字典的方式避免性能瓶颈,最终将处理后的数据高效地添加到DataFrame中,确保数据处理的效率与稳定性。无论您是数据分析师还是Python开发者,本文都将为您提供实用的技巧和解决方案,助您轻松应对变长列表数据整合的难题。

Python Pandas:高效整合变长列表数据至DataFrame的教程

本文详细阐述了如何使用Python的`itertools.zip_longest`和Pandas库,高效地将具有不同长度的列表数据(作为新列和新行数据)整合到现有DataFrame中。教程着重解决在循环中或处理大数据时,直接赋值可能导致的性能碎片化警告问题,提供了一种基于字典构建和DataFrame拼接的优化方案,确保了数据处理的效率与稳定性。

一、问题背景与挑战

在数据分析和处理过程中,将外部数据源集成到现有Pandas DataFrame是常见操作。然而,当这些外部数据以列表形式存在,并且其内部子列表长度不一致时,会带来一定的挑战。例如,我们可能需要将一组新的列名(如list1)与一组变长列表数据(如list2)添加到现有DataFrame中。

示例数据:

import pandas as pd
from itertools import zip_longest

# 原始DataFrame
df = pd.DataFrame([
    ['Alex', 33, 'Male'], 
    ['Marly', 28, 'Female'], 
    ['Charlie', 30, 'Female'], 
    ['Mimi', 37, 'Female'], 
    ['James', 44, 'Male'], 
    ['Jone', 25, 'Male']
], columns=['Name', 'Age', 'Gender'])

print("原始DataFrame:")
print(df)

# 待添加的列名
list1 = ['col1', 'col2', 'col3', 'col4']

# 待添加的行数据,子列表长度不一
list2 = [[1, 2, 3], [2, 3], [1, 8, 4, 3], [22, 35, 32], [65], [2, 45, 55]]

我们的目标是将list1中的元素作为新的列标题,list2中的数据填充到这些新列中,其中list2中较短的子列表应使用默认值(例如0)进行填充,最终得到一个扩展后的DataFrame。

期望结果:

      Name  Age  Gender  col1  col2  col3  col4
0     Alex   33    Male     1     2     3     0
1    Marly   28  Female     2     3     0     0
2  Charlie   30  Female     1     8     4     3
3     Mimi   37  Female    22    35    32     0
4    James   44    Male    65     0     0     0
5     Jone   25    Male     2    45    55     0

直接尝试使用 df[list1] = pd.DataFrame(list2, index=df.index) 这种方式,在list2子列表长度不一致时会遇到数据对齐问题。更重要的是,在处理大规模数据或在循环中频繁执行此类操作时,Pandas可能会发出 PerformanceWarning: DataFrame is highly fragmented 的警告。

好了,本文到此结束,带大家了解了《PythonPandas:合并长列表到DataFrame教程》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>