gpt4 book ai didi

python - 如果在 jupyter notebook 中使用 python 或 pandas,如何将列中的逗号分隔字符串拆分为不同的列

转载 作者:行者123 更新时间:2023-12-05 04:44:58 24 4
gpt4 key购买 nike

我正在学习 python 并处理示例 Kaggle 数据集,并尝试在 jupyter notebook 中使用 python 或 pandas 将一列中以逗号分隔的值拆分为不同的列。

例如:

column_A

垃圾:纸巾,有机物:牛奶,回收:纸板

垃圾:纸巾,有机物:鸡蛋,回收:玻璃,垃圾:粪便

垃圾:杯子,回收:塑料瓶

我想根据逗号将它们分成不同的列,如下所示:

<表类="s-表"><头>垃圾有机物回收垃圾<正文>组织牛奶硬纸板为空纸巾鸡蛋玻璃粪便杯子为空塑料瓶为空

我尝试过使用 Lambda 函数,但它仅在逗号分隔字符串长度相同但长度不等且显示索引错误“列表索引超出范围”时有效。我使用的代码如下:

list_of_dicts = [{x1.split(':')[0].strip():x1.split(':')[1].strip() for x1 in x.split(',')} for x in Df1['column_name']]
Df2=pd.DataFrame.from_dict(list_of_dicts)

非常感谢任何帮助。谢谢

最佳答案

我们可以使用正则表达式模式从 column_A 的每一行中找到所有匹配的键值对,然后将每一行中的键值对列表映射到字典为了创建记录然后从这些记录构建数据框

pd.DataFrame(map(dict, df['column_A'].str.findall(r'\s*([^:,]+):\s*([^,]+)')))

在线查看regex demo

        Garbage Organics          Recycle   Junk
0 Tissues Milk Cardboards NaN
1 Paper Towels Eggs Glass Feces
2 cups NaN Plastic bottles NaN

如果您不想使用正则表达式模式,这里有一个替代方法

df['column_A'].str.split(', ').explode()\
.str.split(': ', expand=True)\
.set_index(0, append=True)[1].unstack()

关于python - 如果在 jupyter notebook 中使用 python 或 pandas,如何将列中的逗号分隔字符串拆分为不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69227725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com