如何将 Pandas DataFrame 中字典的字符串表示形式转换为新列?

Posted

技术标签:

【中文标题】如何将 Pandas DataFrame 中字典的字符串表示形式转换为新列?【英文标题】:How to convert string representation of dictionary in Pandas DataFrame to a new columns? 【发布时间】:2019-09-29 20:18:20 【问题描述】:

我在 Pandas DataFrame Column 中有一个字典的字符串表示形式,如下所示:

>>> df['the_column']
    
0 "'a': 1., 'b': 2., 'c':3."
1 "'a': 4., 'b': 5., 'c':6."
2 "'a': 7., 'b': 8., 'c': 9."
3 "'a': 10., 'b': 11., 'c':12."
    ...

我想将每个键附加到现有 DataFrame 中的列,怎么可能?

我尝试过这样的事情:

list_of_new_col = [json.loads(c) for c in df['the_column']]
# resulting list of dictionary
# convert it to pandas DataFrame
# and then concat with the existing DataFrame

但我得到了 TypeError: the JSON object must be str, bytes or bytearray, not 'float'

知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

除了接受的答案之外,我发现这也有效

pd.concat([df, df.the_column.apply(json.loads).apply(pd.Series)], axis=1)

【讨论】:

【参考方案2】:

你可以试试ast

df['the_column']=df['the_column'].apply(ast.literal_eval)

【讨论】:

以上是关于如何将 Pandas DataFrame 中字典的字符串表示形式转换为新列?的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌套字典转换为 pandas DataFrame?

如何将 pandas DataFrame 转换为省略 NaN 值的字典列表?

如何将 Pandas DataFrame 中的字典列表展平为几列?

如何将 DataFrame 中的每一行/单元格值转换为 pandas 中的字典列表?

如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配

将字典嵌套在另一个字典中,按 Pandas Dataframe 中的值分组