gpt4 book ai didi

python - 解析 pandas 中的一列字符串化字典

转载 作者:行者123 更新时间:2023-12-02 09:30:16 27 4
gpt4 key购买 nike

我有这个数据框:

df = pd.DataFrame([
{ "name": "foo", "results": "{'lower_bound': '15000', 'upper_bound': '19999'}"},
{ "name": "bar", "results": "{'lower_bound': '10000', 'upper_bound': '14999'}"}
])

目前看起来像这样:

    name    results
0 foo {'lower_bound': '15000', 'upper_bound': '19999'}
1 bar {'lower_bound': '10000', 'upper_bound': '14999'}

我想将 results 列转换为结构化数据,以便我可以筛选 df.lower_bound 小于 13000 的行。

我该怎么做?

最佳答案

如果您不想修改现有的DataFrame,您可以通过将“结果”转换为DataFrame来构建条件,然后进行过滤:

mask = (pd.DataFrame(df['results'].apply(ast.literal_eval).tolist())
.astype(int)
.eval('lower_bound < 13000'))
df[mask]

name results
1 bar {'lower_bound': '10000', 'upper_bound': '14999'}
<小时/>

另一种选择是通过 concat 将其分配回 DataFrame:

df = pd.concat([
df,
pd.DataFrame(df.pop('results').apply(ast.literal_eval).tolist()).astype(int)
],
axis=1)
df[df['lower_bound'] < 13000]

name lower_bound upper_bound
1 bar 10000 14999

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

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