- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 PySpark v1.6.0,并且有一列字符串值(根据 .printSchema),但是当我尝试根据列值以“[”字符开头或包含的情况过滤行时一个“,”字符,在这两种情况下,都表示我期望评估为 True 的行仍然是 False...
当我运行代码时:
col_name = "attempt_params_attempt_response_id"
resultDF.select(col_name, resultDF[col_name].like(",")).show(50)
我得到:
我不明白这是怎么可能的,因为字符串值显然包含逗号,因此该行应该返回 true
,而不是 false
。
类似地,当我尝试将行转换为 ArrayType(StringType())
(这是我的最终目标)时,它的行为也就像我的行不包含逗号一样...
当我运行代码时:
from pyspark.sql.types import ArrayType, IntegerType, StringType
col_name = "attempt_params_attempt_response_id"
resultDF.withColumn(col_name,
split(resultDF[col_name], ",\s*")
.cast(ArrayType(StringType()))).select(col_name).show(40)
我得到结果:
我想知道是否可能存在某种奇怪的编码问题,导致字符 ,
与数据中看似 ,
字符的字符不匹配。 ..但我真的不确定。关于为什么会发生这种情况以及如何在不创建多维数组文本的情况下实际使转换工作的任何想法?
最佳答案
如果您的模式错误。 like
相当于使用简单正则表达式的 SQL like,因此 ,
仅匹配文字 ,
。
df = spark.createDataFrame([("[0,2,3]", ), (",", )], ("text", ))
df.withColumn("contains_comma", col("text").like(",")).show()
+-------+--------------+
| text|contains_comma|
+-------+--------------+
|[0,2,3]| false|
| ,| true|
+-------+--------------+
要获得匹配,您应该添加前导和尾随通配符:
df.withColumn("contains_comma", col("text").like("%,%")).show()
# +-------+--------------+
# | text|contains_comma|
# +-------+--------------+
# |[0,2,3]| true|
# | ,| true|
# +-------+--------------+
第二种情况完全没有问题。由于您在 上拆分,
第一项将包含一个前导 [
df.withColumn("contains_comma", split("text", ",\s*")[0]).show()
+-------+--------------+
| text|contains_comma|
+-------+--------------+
|[0,2,3]| [0|
| ,| |
+-------+--------------+
和最后一个尾随]
。如果您不希望它们出现在输出中,则应该将其删除,例如使用 regexp_replace
:
split(regexp_replace("text", "^\[|\]$", ""), ",")
关于python - 带逗号的 PySpark 值不包含逗号? (尝试转换为 ArrayType(StringType())),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52157239/
我有一个带有 2 个 ArrayType 字段的 PySpark DataFrame: >>>df DataFrame[id: string, tokens: array, bigrams: arra
我正在尝试运行一些测试。即 assertDataFrameEquals(etalon, agg) 在 2 个数据帧上。但是得到如下错误 ScalaTestFailureLocation Expecte
我有包含 2 个 ArrayType 列的数据框。我想找出列之间的区别。 column1 将始终具有值,而 column2 可能具有空数组。我创建了以下 udf,但它不起作用 df.show() 给出
我正在尝试创建一个与 ArrayType 一起使用的全局 findAndRemove 函数,但遇到了问题。我收到一条错误消息: 无法将表达式的类型“0”转换为“@lvalue Named”类型 这是函
extension Array where Element: _ArrayType, Element.Generator.Element: Any { func transpose() ->
这个问题在这里已经有了答案: TypeError: Column is not iterable - How to iterate over ArrayType()? (2 个答案) 关闭 3 年前
我在 Pyspark 数据框中有一列,结构如下 Column1 [a,b,c,d,e] [c,b,d,f,g,h,i,p,l,m] 我想返回另一列,随机选择每行中的每个数组,数量在函数中指定。 所以像
我正在尝试按元素求和,并且我创建了这个虚拟 df。输出应该是 [10,4,4,1] from pyspark.sql.types import StructType,StructField, Stri
我有一个包含可以包含整数值的数组类型列的数据框。如果没有值,它将只包含一个值,它将是空值 重要 :注意该列不会为空,而是具有单个值的数组;空值 > val df: DataFrame = Seq((
在 HDF5 的 C++ 绑定(bind)中,我可以创建一个 1x4 H5::ArrayType 由带有类似表达式的 double 组成 H5::ArrayType array_type(H5::Pr
我有一个以 XML 形式出现的数据集,其中一个节点包含 JSON。 Spark 将其作为 StringType 读取,因此我尝试使用 from_json() 将 JSON 转换为 DataFrame。
我正在尝试使用 ArrayType() 列创建一个新的数据框,我尝试过定义模式和不定义模式,但无法获得所需的结果。我的代码在下面,带有架构 from pyspark.sql.types import
我写了一个UDF。它非常慢。我想用 pandas_udf 替换它以利用矢量化。 实际的 udf 有点复杂,但我创建了一个简化的玩具版本。 我的问题:是否可以将玩具示例中的 UDF 替换为可以利用矢量化
我目前有以下代码: def _join_intent_types(df): mappings = { 'PastNews': 'ContextualInformation', 'C
给定以下形式的 PySpark DataFrame: +----+--------+ |time|messages| +----+--------+ | t01| [m1]| | t03|[m1
我正在尝试为我的新 DataFrame 创建一个架构,并尝试了括号和关键字的各种组合,但无法弄清楚如何完成这项工作。我目前的尝试: from pyspark.sql.types import * sc
我有一个 PySpark 数据框,其中一列是字符串类型,而字符串是一个 2D 数组/列表,需要分解为行。但是,由于它不是结构/数组类型,因此无法直接使用explode。 这可以在下面的示例中看到: a
我有一个包含 3 列名为 id、feat1 和 feat2 的数据框。 feat1 和 feat2 是字符串数组的形式: Id, feat1,feat2 ------------------ 1, [
我有一个 HDF5 数据集,它是使用 H5::ArrayType 为 double[3] 编写的。 DataSpace 是一维的 (rank=1),具有 ndat 条目(每个类型都是 double[3
我正在尝试编写一个 PostgreSQL 函数并存储一个 ArrayType *state,每次我调用该函数时都需要更改它。每次调用函数时,我是否需要在 construct_array 中使用单独的
我是一名优秀的程序员,十分优秀!