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

标签 python json pandas dictionary

我有以下问题,我正在尝试将 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/

相关文章:

python astype(str)提供SettingWithCopyWarning并请求我使用loc

python - 解析 Pandas 中的日期范围字符串

python - 在 python 中使用 Mocking 进行单元测试

javascript - 如何使用包含任意参数而不是标签和值的 JSON 填充 DOJO Select

json - 根据内部对象的值等于外部对象的值过滤对象数组

php - Mysqli 到 PHP 到 JSON

python - Scikit-learn 平衡子采样

python - 将压缩的 csv 导入 mongo 集合时优化 python 代码性能

python - 忽略 python 中的 SonarQube 警告

python - 你可以使用字符串来实例化一个类吗?