我有带有列 metadata
的 Pandas df .此列包含嵌套字典。我想去掉每一行中的值周围的单引号。 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>Don\'t forget to buy a card</p>", "links": {"edit": {"dev": "...}}}
但是,当我尝试对
metadata
中的每一行执行此操作时列,它给了我一个错误。这是代码:for index, row in sample_df.iterrows():
sample_df['metadata'] = json.loads(sample_df["metadata"])
TypeError: the JSON object must be str, bytes or bytearray, not 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
最佳答案
尝试使用此代码:
sample_df['metadata'] = sample_df['metadata'].apply(json.loads)
Panda 的 apply 函数,将函数传递给系列的每个值。这非常有用,因为您可以跳过每一行的迭代。
如果您想了解更多关于此功能的信息以及您可以更改的参数,请参阅官方文档here .
关于python - 如何将 json.loads 应用于 pandas df 中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60174271/