小编Ano*_*ous的帖子

如何 json_normalize() df 中的特定字段并保留其他列?

这是我的简单示例(我的实际数据集中的 json 字段非常嵌套,因此我一次解压一层)。我需要在 json_normalize() 之后保留数据集上的某些列。

https://pandas.pydata.org/docs/reference/api/pandas.json_normalize.html

开始: 开始

预期(Excel 模型): 预期的

实际的: 实际的

import json

d = {'report_id': [100, 101, 102], 'start_date': ["2021-03-12", "2021-04-22", "2021-05-02"], 
     'report_json': ['{"name":"John", "age":30, "disease":"A-Pox"}', '{"name":"Mary", "age":22, "disease":"B-Pox"}', '{"name":"Karen", "age":42, "disease":"C-Pox"}']}

df = pd.DataFrame(data=d)
display(df)

df = pd.json_normalize(df['report_json'].apply(json.loads), max_level=0, meta=['report_id', 'start_date'])
display(df)
Run Code Online (Sandbox Code Playgroud)

查看 json_normalize() 的文档,我认为元参数是我需要保留 report_id 和 start_date 的参数,但它似乎不起作用,因为要保留的预期字段没有出现在最终数据集上。

有人有建议吗?谢谢。

python json dataframe pandas json-normalize

4
推荐指数
1
解决办法
5653
查看次数

加入PySpark时有right_anti吗?

查看文档:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html? highlight=join

“how=”参数有以下选项...:

内部、交叉、外部、全、fullouter、full_outer、左、leftouter、left_outer、右、rightouter、right_outer、半、leftsemi、left_semi、anti、leftanti 和 left_anti。

连接图

我知道你可以翻转 df1 和 df2 并且仍然执行 left_anti 来实现 right_anti,但是函数参数是否完全缺少 right_anti 或者我错过/不理解一个概念?

parameters join function apache-spark-sql pyspark

3
推荐指数
1
解决办法
8123
查看次数

如何在 PySpark 中仅将数据集的第一个字母大写?(简单大写/句子大小写)

我需要清理几个字段:物种/描述通常是简单的大写,其中第一个字母大写。PySpark 只有 upper、lower 和 initcap(每个单词都大写),这不是我想要的。https://spark.apache.org/docs/2.0.1/api/python/_modules/pyspark/sql/functions.html

Python 有一个原生的 Capitalize() 函数,我一直在尝试使用它,但总是收到对列的错误调用。

fields_to_cap = ['species', 'description']

for col_name in fields_to_cap:
    df = df.withColumn(col_name, df[col_name].captilize())
Run Code Online (Sandbox Code Playgroud)

有没有办法轻松地利用这些字段?

需要明确的是,我正在尝试将字段中的数据大写。这是一个例子:

当前:“这是一个描述。”

预期:“这是一个描述。”

python field dataset capitalize pyspark

1
推荐指数
2
解决办法
1万
查看次数