我需要在pythone中从dataframe中的文本中提取字符串

2024-05-15 15:50:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,其中包含一列,如下所示,包含4000行,我需要提取一个字符串,如:

动作冒险幻想科幻小说

摘自下文

'[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]'

Tags: 数据字符串nameidactionfantasy幻想冒险
2条回答

这是JSON,而不是数据帧。使用json模块:

import json
s = '[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]'
'-'.join(d['name'] for d in json.loads(s))

#evaluates to 'Action-Adventure-Fantasy-Science Fiction'

根据您的问题,似乎您的数据帧中每行都有这个dict嵌入数据的字符串/列表

我编写了一个可能有帮助的示例:

import pandas as pd
import json
df = pd.DataFrame(['[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]'], columns=['x'])

我制作了一个自定义函数来应用于每一行数据。它可能不是最优雅的,但希望它很容易理解

def collect_names(data_dict):
    name_list = [dic["name"] for dic in data_dict]
    return '-'.join(name_list)

最后

df["names"] = df['x'].apply(lambda row: collect_names(json.loads(row)))

返回…'数据框中每行的动作冒险幻想科幻小说

相关问题 更多 >