gpt4 book ai didi

python - pandas - 要列出到字典的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:42 25 4
gpt4 key购买 nike

我有以下问题,我正在尝试将 pandas df 中的字符串转换为列表,以便以后可以将它们构造为字典。请看下面:

我的数据以字符串形式出现在 pandas df 中,即

df['users'].iloc[0] = "str1|str2, str3|str4"

.....等等系列。

从这里开始,我将字符串拆分为:

df['users'] = df['users'].map(lambda x: re.split("[',|']",x)),它返回一个列表[str1, str2, str3, str4]

到目前为止一切顺利。我无法解决的挑战是采用上述列表并将其构造为字典,以便我生成以下内容:

[{
字段 1:str1
字段 2:str2
字段 3:
字段 4:
},{
字段 1:str3
字段 2:str4
字段 3:
字段 4:
}]

稍后可以填写空白字段(可选)。

是否有更好的方法来构建数据以更轻松地实现这一目标?即,列表为 [[str1, str2],[str3, str4]]

我如何使用字段的名称(field1、filed2、...)从此列表中“压缩”这些值?

本质上,最终输出应该在原始字符串所在的 df 的每个单元格中包含上面的字典。

任何人都可以提供见解吗?谢谢。

最佳答案

列表列表

df.users.map(
lambda s: [x.split('|') for x in s.split(', ')]
)

0 [[str1, str2], [str3, str4]]
Name: users, dtype: object

使用 f 字符串的字典

df.users.map(
lambda s: [
{f'field{i}': v for i, v in enumerate(x.split('|'), 1)}
for x in s.split(', ')
]
)

0 [{'field1': 'str1', 'field2': 'str2'}, {'field...
Name: users, dtype: object

带有预先确定的字段

fields = 'field1 field2 field3 field4'.split()

df.users.map(
lambda s: [dict(zip(fields, x.split('|'))) for x in s.split(', ')]
)

0 [{'field1': 'str1', 'field2': 'str2'}, {'field...
Name: users, dtype: object

如果你想要所有字段

from itertools import zip_longest

fields = 'field1 field2 field3 field4'.split()

df.users.map(
lambda s: [dict(zip_longest(fields, x.split('|'))) for x in s.split(', ')]
)

关于python - pandas - 要列出到字典的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49911196/

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