gpt4 book ai didi

python - 将字典元素附加到空的 Pandas Dataframe 列中

转载 作者:太空宇宙 更新时间:2023-11-04 05:27:26 25 4
gpt4 key购买 nike

我在 pandas 数据框中有数据,如下所示:

queryName   Market  tags    categoryDetails
dummy_query (dummy_market) dummy_market dummy_tag [{'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '2892695401'}, {'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '21892718'}, {'name': 'dummy_data', 'parentName': 'Location', 'parentId': '21221517840', 'id': '229565351'}]
dummy_query (dummy_market) dummy_market dummy_tag [{'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '2892659'}, {'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '2892667'}, {'name': 'irrelevant_data', 'parentName': 'irrelevant_scrape', 'parentId': '2662610', 'id': '268415777'}, {'name': 'dummy_data', 'parentName': 'Location', 'parentId': '21221517840', 'id': '2565351'}]
dummy_query (dummy_market) dummy_market dummy_tag [{'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '2892695401'}, {'name': 'irrelevant_data', 'parentName': 'irrelevant_scrape', 'parentId': '2662610', 'id': '268415777'}, {'name': 'dummy_data', 'parentName': 'Location', 'parentId': '21221517840', 'id': '229565351'}, {'name': 'Consideration', 'parentName': 'irrelevant_scrape', 'parentId': '2203873', 'id': '2203874'}]
dummy_query (dummy_market) dummy_market dummy_tag [{'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '2892695401'}, {'name': 'irrelevant_data', 'parentName': 'irrelevant_scrape', 'parentId': '2662610', 'id': '268415777'}, {'name': 'dummy_data', 'parentName': 'Location', 'parentId': '21221517840', 'id': '229565351'}]
dummy_query (dummy_market) dummy_market dummy_tag [{'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '21892718'}, {'name': 'irrelevant_data', 'parentName': 'irrelevant_scrape', 'parentId': '2662610', 'id': '268415777'}, {'name': 'dummy_data', 'parentName': 'Location', 'parentId': '21221517840', 'id': '229565351'}]
dummy_query (dummy_market) dummy_market dummy_tag [{'name': 'relevant_data', 'parentName': 'relevant_scrape', 'parentId': '289245228', 'id': '2892659'}, {'name': 'dummy_data', 'parentName': 'Location', 'parentId': '21221517840', 'id': '229565351'}, {'name': 'dummy_data', 'parentName': 'irrelevant_scrape', 'parentId': '2203873', 'id': '2203880'}]

我需要我的数据框有一个额外的第五列,它将包含所有名称键以及每行称为“relevant_data”的元素。这些数据点是根据 parentName 选择的。如果 parentName = 'relevant_scrape',请选择“名称”。

我应该怎么做呢?到目前为止,这是我的代码。

import pandas as pd
import json
from pandas import DataFrame, read_csv

df = pd.read_csv('dataset.csv', sep = '\t')
for row in df.categoryDetails:
if isinstance(row, str):
list_dicts = json.loads(row.replace("'", "\""))
for each_dict in list_dicts:
if each_dict["parentName"] == "relevant_scrape":
df['fifth_column'] = each_dict["name"]

df.to_csv('output.txt', sep = '\t')

(注意:我的原始数据有点困惑,在我将其引号替换为双引号之前无法呈现为 JSON。因此调用了 json.loads。)

这为我生成了一个包含第五列的数据框,但它在每一行中插入了完全相同的“名称”元素。感谢您提供任何帮助,谢谢。

最佳答案

您正在使用 df['fifth_column'] = each_dict["name"],它将 'fifth_column' 列中的所有值设置为每次迭代的相同值,因为 pandas 的操作默认是列式的。

也许您应该尝试以下代码段:

def extract_details(row):
# your parsing logic.
if isinstance(row, str):
list_dicts = json.loads(row.replace("'", "\""))
all_relevant_data = []
for each_dict in list_dicts:
if each_dict["parentName"] == "relevant_scrape":
all_relevant_data.append(each_dict["name"])
return ','.join(all_relevant_data)

然后你可以这样做:

df['fifth_column'] = df.categoryDetails.apply(extract_details)

关于python - 将字典元素附加到空的 Pandas Dataframe 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38254128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com