【发布时间】:2021-12-13 15:59:38
【问题描述】:
我有一个 json 数据列存在的 excel 文件,我想在 pyspark python 中读取该列的每个值,而不是我该怎么做? data.xlsx
【问题讨论】:
标签: python pandas pyspark openpyxl
我有一个 json 数据列存在的 excel 文件,我想在 pyspark python 中读取该列的每个值,而不是我该怎么做? data.xlsx
【问题讨论】:
标签: python pandas pyspark openpyxl
from ast import literal_eval
import pandas as pd
df_raw = pd.read_excel("data.xlsx")
data_raw = df_raw.loc[:, "data"]
data_raw = data_raw.apply(literal_eval)
data_raw = data_raw.tolist()
df = pd.DataFrame(data_raw)
基本上,我使用 literal_eval 将“数据”列中的所有 JSON 字符串转换为 Python dicts,然后将 Python dicts 列表转换为 DataFrame。
让我知道它是否适合你!
您也可以使用json 包中的loads 函数来代替literal_eval:json.loads 更具体地用于JSON 格式,而literal_eval 则更好,如果您有通用字典或存储在 Excel 文件中的其他 Python 数据结构。
【讨论】:
import json
import pandas as pd
df = pd.read_excel("data.xlsx")
# Convert strings to dictionaries
df["data"] = df["data"].apply(json.loads)
# Explode dictionaries column into multiple columns
df2 = pd.DataFrame(df["data"].tolist())
# Join ID column with data columns
df = df[["id"]].join(df2)
print(df)
# Output:
# id name languages
# 0 1 Bob English
# 1 2 Bob English
【讨论】: