pandas 添加空列并赋空值案例
本文介绍在 pandas 中为 DataFrame 添加空列并赋空值的方法。通过 apply 函数或直接赋值实现,并解决多文件标签映射时的列扩展问题。
首先构建用于测试的 DataFrame 对象。
>>> import pandas as pd
>>> df = pd.DataFrame([{'a':1, 'b':2}, {'a':3, 'b':4}])
>>> df
a b
0 1 2
1 3 4
接下来演示如何向该对象中添加两个空列。
>>> df[['c','d']]=df.apply(lambda x:('',''),axis=1,result_type='expand')
>>> df
a b c d
0 1 2
1 3 4
此外,也可以采用逐列单独添加的方式来实现。
>>> df['c'] = '' >>> df['d'] = ''
然而,若尝试直接对不存在的多个列名进行批量赋值,将会引发错误。
>>> df[['c', 'd']] = '' KeyError: "None of [Index(['c', 'd'], dtype='object')] are in the [columns]"
补充说明:关于使用 pandas 的 DataFrame 类型处理 CSV 文件并增加新列的操作。
具体问题分析如下。
涉及两个 CSV 文件,分别为 df_val.csv 和 df_classes.scv。其中 df_val.csv 包含 2 列共 36500 行数据,而 df_classes.scv 包含 3 列共 365 行数据。
两个 CSV 文件之间的关联在于:实际存在 365 个文件夹,每个文件夹内包含 100 张图片。df_val.csv 记录了所有图片的路径,而 df_classes.scv 则记录了这 365 个文件夹的名称及其对应的标签。
主要目标是:将 df_classes.scv 文件中的标签信息映射到 df_val.csv 文件中(注:每个文件夹下的 100 张图片共享同一个标签)。
具体的实现代码如下。

代码逻辑说明如下。
读取第二个文件时,由于该文件以空格作为分隔符(第一个文件为逗号分隔),因此需要指定 sep='\s' 和 engine='python'。此外,因文件中包含中文字符,还需指定 encoding='UTF-8'。
使用 print 语句用于查看中间结果,以便调试。
需注意 DataFrame 类型的索引访问顺序为 [列][行]。
由于每 100 个样本对应另一个文件夹中的一个条目,因此需要通过循环将标签复制 100 次。具体参考以下示例。

此处扩展一个其他相关示例。

解决该问题的思路是:先利用 list 构建好需要添加的列数据,随后使用 insert 方法将其插入。目前尚未发现直接指定行数进行添加的方法。
总结要点。
若直线路径不可行,可尝试曲线救国的策略。
list 数据结构确实简单且实用。
编程工作带来满足感。
以上为个人经验分享,旨在提供参考。欢迎读者支持,如有错误或未尽之处,敬请指正。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













