+----+------+-------------+
|user| level|value_pair |
+----+------+-------------+
| A | 25 |(23.52,25.12)|
| A | 6 |(0,0) |
| A | 2 |(11,12.12) |
| A | 32 |(17,16.12) |
| B | 22 |(19,57.12) |
| B | 42 |(10,3.2) |
| B | 43 |(32,21.0) |
| C | 33 |(12,0) |
| D | 32 |(265.21,19.2)|
| D | 62 |(57.12,50.12)|
| D | 32 |(75.12,57.12)|
| E | 63 |(0,0) |
+----+------+-------------+
+----+------+-------------+-------+
|user| level|value1 |value2 |
+----+------+-------------+-------+
| A | 25 |23.52 |25.12 |
| A | 6 |0 |0 |
| A | 2 |11 |12.12 |
| A | 32 |17 |16.12 |
| B | 22 |19 |57.12 |
| B | 42 |10 |3.2 |
| B | 43 |32 |21.0 |
| C | 33 |12 |0 |
| D | 32 |265.21 |19.2 |
| D | 62 |57.12 |50.12 |
| D | 32 |75.12 |57.12 |
| E | 63 |0 |0 |
+----+------+-------------+-------+
df = df.withColumn('value1', pyspark.sql.functions.split(df['value_pair'], ',')[0]
df = df.withColumn('value2', pyspark.sql.functions.split(df['value_pair'], ',')[1]
但我如何也摆脱这些假想呢?
对于括号,如注释所示,可以使用regexp_replace
,但也需要包括\
。反斜杠\
是正则表达式的转义字符。
另外,我相信您需要首先删除括号,然后展开列。
from pyspark.sql.functions import split
from pyspark.sql.functions import regexp_replace
df = df.withColumn('value_pair', regexp_replace(df.value_pair, "\(",""))
df = df.withColumn('value_pair', regexp_replace(df.value_pair, "\)",""))
df = df.withColumn('value1', split(df['value_pair'], ',').getItem(0)) \
.withColumn('value2', split(df['value_pair'], ',').getItem(1))
>>> df.show(truncate=False)
+----+-----+-----------+------+---------+
|user|level|value_pair |value1|value2 |
+----+-----+-----------+------+---------+
| A |25 |23.52,25.12|23.52 |25.12 |
| A |6 |0,0 |0 |0 |
| A |2 |11,12.12 |11 |12.12 |
| A |32 |17,16.12 |17 |16.12 |
| B |22 |19,57.12 |19 |57.12 |
| B |42 |10,3.2 |10 |3.2 |
| B |43 |32,21.0 |32 |21.0 |
| C |33 |12,0 |12 |0 |
| D |32 |265.21,19.2|265.21|19.2 |
| D |62 |57.12,50.12|57.12 |50.12 |
| D |32 |75.12,57.12|75.12 |57.12 |
| E |63 |0,0 |0 |0 |
+----+-----+-----------+------+---------+
正如注意到的,我稍微改变了您的代码如何获取这两个项目。
下面有以下dataframe架构
在JMeter中:我在一个线程组中使用了两个http请求,因此我从这些http请求中获得了两个响应。我需要‘成员ID'从一个响应和一些字符串(摘要)从其他响应,以便创建第三个http请求。 在使用两个正则表达式提取器时,我添加了两个调试采样器。 然后,我将提取的值'member id'和string(摘要)作为参数传递给第三个http请求。 当我运行它时,我得到了错误,我的第三个http请求失败了
我将一个DBF文件输入到数据框中并运行查询。 这是密码。 然后得到这样一个错误。。KeyError:[Int64Index([0],dtype='int64')]中没有一个在[columns]中 这是我想要的文本文件的输出..."2020-01-01 943 527.0 56.46 56.46 0.0 0.0"
Q非常业余的程序员在这里,寻求你的帮助。 我必须经常编辑这样的xml文件 使用一个相当复杂的正则表达式搜索和替换过程,我只能提取标记属性的值。(这就是我所关心的)。 但是这很耗时,而且在Python中必须有非常简单的方法来查找属性标记="SOME_TEXT"部分并将所有值放入一个数组中,然后打印出该数组(到文件中)。但是我无法弄清楚:( 我正在寻找一种不包括导入任何类型的XML库的方法,因为我想让
我需要对以下示例JSON执行Jolt转换: 输入
我有一个用户列表“abc”。 我只需要从中提取名称和地址,并保存到另一个新的列表对象“xyz”。或者一些新的列表,它有两个字符串字段name和address。例如: 我知道可以通过迭代原始列表并保存到另一个新的列表对象来完成。但我想知道如何在中更有效地完成。通过使用、……等,并使用默认构造函数。