我有一个 pandas 数据框列,其中包含这样的字符(应该是一本字典,但在抓取到 CSV 后变成了字符串):
{"id":307,"name":"Drinks","slug":"food/drinks"...`
我正在尝试提取“名称”的值,因此在本例中它将是“饮料”。
我现在的代码(如下所示)不断输出整个数据帧的 NaN。
df['extracted_category'] = df.category.str.extract('("name":*(?="slug"))')
我的正则表达式有什么问题?谢谢!
最佳答案
最好将其转换为数据帧,您可以使用 eval
和 pd.Series
类似
# sample dataframe
df
category
0 {"id":307,"name":"Drinks","slug":"food/drinks"}
df.category.apply(lambda x : pd.Series(eval(x)))
id name slug
0 307 Drinks food/drinks
或者使用 eval
仅将字符串转换为字典
df['category'] = df.category.apply(eval)
df.category.str["name"]
0 Drinks
Name: category, dtype: object
关于Python Pandas 正则表达式输出 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63278204/