当前位置: 首页 > 知识库问答 >
问题:

如何转换字符串表示的字典在熊猫DataFrame到一个新的列?

凌经赋
2023-03-14

我有一个字符串表示的字典在熊猫DataFrame列像这样:

>>> 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

但是我得到了类型错误:JSON对象必须是str,字节或字节数组,而不是浮动

有没有办法解决这个问题?

共有2个答案

冯曾笑
2023-03-14

除了接受的答案我发现这工程以及

pd.concat([df, df.the_column.apply(json.loads).apply(pd.Series)], axis=1)
廖鸿达
2023-03-14

您可以尝试使用ast

df['the_column']=df['the_column'].apply(ast.literal_eval)
 类似资料:
  • 我的数据如下所示: 内部数组的长度始终相同。键1、键2、键3也始终相同。 我想将其转换为熊猫DataFrame,其中outer_key1,outer_key2,...是索引,key1,key2,key3是列。 编辑: 数据中存在一个问题,我认为这就是给定解决方案不起作用的原因。在少数情况下,内部数组中有三个s,而不是三个字典。这样地:

  • 我有这个“file.csv”文件要和熊猫一起读: 使用 输出为: 我知道,列是一个完整的字符串,因为: 我需要将其作为字符串列表来阅读,如。我尝试了这个问题中提供的解决方案,但没有成功,因为我的和字符实际上会把事情搞砸。 预期输出应为:

  • 我有以下数据框 我想用替换和,因此最终的数据帧是 我尝试了以下方法,但不起作用:

  • 问题内容: 如何将的表示形式(例如以下字符串)转换为? 我宁愿不使用。我还能使用什么? 造成这种情况的主要原因是他写的我的同事课程之一,将所有输入都转换为字符串。我不打算去修改他的课程,以解决这个问题。 问题答案: 从Python 2.6开始,你可以使用内置的: 这比使用更为安全eval。正如其自己的文档所说: 例如:

  • 问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和:

  • 问题内容: 我有一个带有ID号的大型数据框: 这些现在都是字符串。 我想转换为不使用循环-为此我使用。 问题是我的某些行包含无法转换为的脏数据,例如 如何(不使用循环)删除这些类型的事件,以便我可以放心使用? 问题答案: 您需要向功能添加参数: 如果是列: 但非数字会转换为,因此所有值都是。 对于需要转换到一些值,例如,然后转换为: 样品: 编辑:如果使用0.25+大熊猫,则可以使用: