中解析一列字符串化字典

中解析一列字符串化字典

我有这个数据框:

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的行。

我怎样才能做到这一点?

最佳答案

另一种方法是使用json_normalize和ast_literal

from pandas.io.json import json_normalize
from ast import literal_eval




然后拆分JSON col,然后将它们合并回它们的索引。

    s = json_normalize(df['results'].apply(literal_eval).astype(int))
    df_new = pd.merge(df,s,right_index=True,left_index=True)
    print(df_new)
      name  Results                                           lower_bound  upper_bound
    0  foo  {'lower_bound': '15000', 'upper_bound': '19999'}       15000   19999
    1  bar  {'lower_bound': '10000', 'upper_bound': '14999'}       10000   14999


对于dtypes:

  print(df_new.dtypes)
    name           object
    results        object
    lower_bound     int32
    upper_bound     int32
    dtype: object

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

10-10 06:42