我的 pyspark 数据框中有 500 列……有些是字符串类型,有些是 int 类型,有些是 boolean(100 个布尔列)。现在,所有布尔列都有两个不同的级别 - 是和否,我想将它们转换为 1/0
对于字符串,我有三个值 - 通过、失败和空。如何用 0 替换这些空值?fillna(0) 仅适用于整数
c1| c2 | c3 |c4|c5..... |c500
yes| yes|passed |45....
No | Yes|failed |452....
Yes|No |None |32............
Run Code Online (Sandbox Code Playgroud)
当我做
df.replace(yes,1)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError: Mixed type replacements are not supported
Run Code Online (Sandbox Code Playgroud) 当我使用 Python 在 AWS Glue 中运行 Glue 作业样板时,出现错误
\n\nimport sys\nfrom awsglue.transforms import *\nfrom awsglue.utils import getResolvedOptions\nfrom pyspark.context import SparkContext\nfrom awsglue.context import GlueContext\nfrom awsglue.job import Job\n\nglueContext = GlueContext(SparkContext.getOrCreate())\nspark = glueContext.spark_session\n\nargs = getResolvedOptions(sys.argv, [\'JOB_NAME\'])\njob = Job(glue_context)\njob.init(args[\xe2\x80\x98JOB_NAME\xe2\x80\x99], args)\nRun Code Online (Sandbox Code Playgroud)\n\n这是错误
\n\nin getResolvedOptions\nFile "/usr/lib64/python2.7/argparse.py", line 1733, in parse_known_args\nnamespace, args = self._parse_known_args(args, namespace)\nFile "/usr/lib64/python2.7/argparse.py", line 1957, in _parse_known_args\nself.error(_(\'argument %s is required\') % name)\nawsglue.utils.GlueArgumentError: argument --JOB_NAME is required\nRun Code Online (Sandbox Code Playgroud)\n\n这遵循我的代码,然后
\n\njob.commit()\nRun Code Online (Sandbox Code Playgroud)\n\n但 AWS 表示不提供 JOBNAME。\n我做错了什么?\ngetResolved 是做什么的?我尝试阅读 AWS 文档,但什么也没得到。
\n我的数据框有一个列num_of_items。这是一个计数字段。现在,我想将其从 int 类型转换为 list 类型。
我尝试使用array(col)甚至创建一个函数来通过将 int 值作为输入来返回列表。没用
from pyspark.sql.types import ArrayType
from array import array
def to_array(x):
return [x]
df=df.withColumn("num_of_items", monotonically_increasing_id())
Run Code Online (Sandbox Code Playgroud)
df
col_1 | num_of_items
A | 1
B | 2
Run Code Online (Sandbox Code Playgroud)
预期产出
col_1 | num_of_items
A | [23]
B | [43]
Run Code Online (Sandbox Code Playgroud)