替换pandas数据帧中包含引号的字符串

问题描述 投票:0回答:2

我在数据框中有一个列,它是一个字典列表。例如:

[{'attr': 'color', 'value': 'BLUE'}]

问题是'attr'和'value'不是必需的,我希望所有行中的格式都改为:

[{'color' : 'BLUE'}]

pandas str.replace不工作,因为'attr'和'value'包含在引号内,我无法编写一个合适的正则表达式,完全删除'attr'和'value'但保持引号超过颜色和BlUE。

什么可以成为解决这个问题的pythonic方法?

python pandas
2个回答
2
投票

使用.apply

例如:

import pandas as pd

df = pd.DataFrame({"A": [[{'attr': 'color', 'value': 'BLUE'}]]})
df["A"] = df["A"].apply(lambda x: [dict([i.values()]) for i in x])
print(df)

输出:

                       A
0  [{'color': 'BLUE'}]

1
投票

像这样的东西:

df = pd.DataFrame({'col':[[{'attr': 'color', 'value': 'BLUE'}]]})
df['col'].apply(lambda x: {elt['attr']: elt['value'] for elt in x})
© www.soinside.com 2019 - 2024. All rights reserved.