如何基于两个列表创建Pandas DataFrame并解决赋值长度不匹配错误
错误原因
你将DataFrame列赋值的逻辑放在了for循环内部,第一次循环执行时,campaign_name和splittedString两个列表的长度均为1,此时空DataFrame被赋值后,行索引长度被固定为1。第二次循环时两个列表长度变为2,你尝试给只有1行的DataFrame赋值长度为2的列,自然触发长度不匹配的报错。
修复方案
方法1:修改现有代码逻辑
只需要把列赋值的代码移到循环外部,等两个列表收集完所有数据后再生成DataFrame即可:
import pandas # 假设underscoreList是你提前筛选好的、包含下划线的campaign_name列表 splittedString = list() campaign_name = list() for i in underscoreList: campaign_name.append(i) splittedString.append(i.split("_")) # 所有数据收集完成后再构建DataFrame df = pandas.DataFrame({ "campaign_name": campaign_name, "campaign_name1": splittedString }) print(splittedString) print(campaign_name) print(df)
方法2:使用Pandas原生方法(更推荐)
不需要手动写循环,用Pandas的矢量化操作即可完成需求,代码更简洁执行效率也更高:
import pandas as pd # 第一步:读取原始数据集 df_raw = pd.read_csv("你的数据集文件路径.csv") # 第二步:筛选campaign_name包含下划线的行,同时拆分出单词列 df = df_raw[df_raw["campaign_name"].str.contains("_")].copy() df["campaign_name1"] = df["campaign_name"].str.split("_") print(df)
内容的提问来源于stack exchange,提问作者RushHour
相关产品推荐
相关产品推荐

