从 pandas DataFrame 中的列中提取 JSON 数据
Posted
技术标签:
【中文标题】从 pandas DataFrame 中的列中提取 JSON 数据【英文标题】:Extracting JSON data from column in pandas DataFrame 【发布时间】:2019-02-03 11:49:47 【问题描述】:如果我们有一个带有 Car_Info
列的 pandas 数据框 df1。
我们如何将以下字符串中的信息提取到新列中?即使用正则表达式与 pd.read_json()?
请注意“car_id
”和“wheel_id
”的格式与“price
”和“count_results
”的格式略有不同。
Car_Info
'"car_id":"100","wheel_id":"80-ABC-999","price":14,"count_results":1051'
'"car_id":"200","wheel_id":"90-XY-6134","price":245,"count_results":37'
'"car_id":"300","wheel_id":"100-QRST-83751","price":729,"count_results":203'
更具体地说,我们如何操作 Car_Info 列以将以下四列添加到 pandas 数据框 df1?
car_id
100
200
300
wheel_id
80-ABC-999
90-XY-6134
100-QRST-83751
price
14
245
729
count_results
1051
37
203
【问题讨论】:
您的输入是 JSON。请标记 [json]。将 JSON 读入 pandas 有很多重复。 如何将 JSON 列转换为字典并提取 car_id、wheel_id、price 和 count_results 的结果? 我看到你在 2 小时后将其交叉发布为 https://***.com/questions/52066019/using-regex-to-extract-information-from-a-pandas-dataframe-column,这是不受欢迎的。此外,您没有将其表述为“使用正则表达式将 JSON 解析为熊猫”。 【参考方案1】:这是JSON,pandas可以直接导入JSON:
import pandas as pd
df = pd.read_json('"car_id":"100","wheel_id":"80-ABC-999","price":14,"count_results":1051', lines=True)
car_id count_results price wheel_id
0 100 1051 14 80-ABC-999
【讨论】:
你会如何使用正则表达式回答这个问题? @user9723782:不要。不要重写库。不要重新发明***,即使您可以复制投入 pandas 的数万工时。我看到你把它交叉发布为https://***.com/questions/52066019/using-regex-to-extract-information-from-a-pandas-dataframe-column,这在 SO 上是不受欢迎的。此外,您没有将其表述为“使用正则表达式将 JSON 解析为熊猫”。【参考方案2】:下面我创建了一个代码来创建一个新的数据框来解决您的问题。此数据框可以合并回您的原始数据框。
df = pd.DataFrame()
for row in range(len(df1['car'])):
df = df.append(pd.DataFrame([ast.literal_eval(df1['car_info'][row])]))
可以从ast导入函数literal_eval,将列中的字符串作为字典处理。
【讨论】:
你会如何使用正则表达式回答这个问题?以上是关于从 pandas DataFrame 中的列中提取 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Python Pandas Dataframe 中的 STRING 列中提取嵌套字典?
从pandas DataFrame中另一列中的位置给定的字符串列中提取字符[重复]
如何从python中的pandas数据框中的列中提取关键字(字符串)