我有一个包含metadata
列的pandas数据框。该列包含嵌套字典。我想要在每一行中消除值周围的单引号。json.loads(data)
对于我传递的单个值有效。
以下是示例:
data = '{"dek": "<p>Don\'t forget to buy a card</p>", "links": {"edit": {"dev": "...}}}'
data_json = json.loads(data)
data
输出结果:
{"dek": "<p>别忘了买一张卡片</p>", "links": {"edit": {"dev": "...}}}
然而,当我尝试将其应用于metadata
列中的每一行时,它会出现错误。以下是代码:
for index, row in sample_df.iterrows():
sample_df['metadata'] = json.loads(sample_df["metadata"])
类型错误:JSON对象必须是str、bytes或bytearray类型,而不是Series类型
数据集示例:
id metadata title
123 {"dek": "<p>Student loan debt is crippling a g... channel
124 {"dek": "<p>Student loan debt is crippling a... fashion
TypeError: JSON对象必须是str、bytes或bytearray类型,而不是dict
。 - Sonyametadata
列的类型是 Series。 - Sonyasample_df['metadata'] = sample_df['metadata'].apply(json.loads)
这一次没有出错,但是该行中单个值的输出仍然在字典周围有引号。我运行了这个命令:val = sample_df['metadata'].values[0]
- Sonyafor items in df['metadata3']: for key, value in items.items(): print(key)
当然要注意正确的缩进。 - Simone Coslovich