将列中的变量长度列表拆分为列

2024-09-30 14:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在pandas dataframe中,我有一列如下所示:

+----------------------------------------------+
|                carContactTel                 |
+----------------------------------------------+
| []                                           |
| ['tel 432424']                               |
| ['tel 84958358']                             |
| ['tel 5434645', 'tel 534535', 'tel 3242342'] |
+----------------------------------------------+

所以有些列表元素是空的。 我正在尝试将其拆分为新列:tel1,tel2,tel3,tel4,tel5。 若列表太短,则相应列中的值应保持为空

我最后一次尝试基于我找到的解决方案:

carContactDF = pd.DataFrame(carContactDF["carContactTel"].to_list(), columns=["carContactTel1", "carContactTel2", "carContactTel3", "carContactTel4", "carContactTel5"])

错误总是关于列表的形状…尝试用'Nan'替换空列表,但也不起作用

列表是用另一个python脚本正确生成的,因此没有错误…已检查

错误:

ValueError: 5 columns passed, passed data had 3 columns

目前,3个项目位于顶部,但脚本将运行在更大的数据集上,该数据集将包含5个元素的列表项目


Tags: columns数据项目脚本元素dataframepandas列表
2条回答

carContactTel列创建一个新的数据帧,然后使用^{}+^{}根据要求对列进行整合,最后使用^{}NaN值替换为空字符串:

df1 = pd.DataFrame(carContactDF['carContactTel'].tolist())
df1 = (
    df1.set_axis(df1.columns + 1, 1).add_prefix('carContactTel')
    .fillna('').replace('^tel\s*', '', regex=True)
)

结果:

print(df1)
  carContactTel1 carContactTel2 carContactTel3
0                                             
1         432424                              
2       84958358                              
3        5434645         534535        3242342

筛选len(carContactTel)所在的行<;5并将na值附加到这些列表中。重复,直到完成。然后分开

相关问题 更多 >