Python 对PySpark数据帧中列的所有值进行切片
我有一个数据帧,我想切片该列的所有值,但我不知道如何做 我的数据帧Python 对PySpark数据帧中列的所有值进行切片,python,dataframe,pyspark,apache-spark-sql,pyspark-sql,Python,Dataframe,Pyspark,Apache Spark Sql,Pyspark Sql,我有一个数据帧,我想切片该列的所有值,但我不知道如何做 我的数据帧 +-------------+------+ | studentID|gender| +-------------+------+ |1901000200 | M| |1901000500 | M| |1901000500 | M| |1901000500 | M| |1901000500 | M| +-------------+------+ 我已将stude
+-------------+------+
| studentID|gender|
+-------------+------+
|1901000200 | M|
|1901000500 | M|
|1901000500 | M|
|1901000500 | M|
|1901000500 | M|
+-------------+------+
我已将studentID
转换为字符串,但无法从中删除前190个。我想要低于输出
+-------------+------+
| studentID|gender|
+-------------+------+
| 1000200 | M|
| 1000500 | M|
| 1000500 | M|
| 1000500 | M|
| 1000500 | M|
+-------------+------+
我尝试了下面的方法,但它给了我错误
students_data = students_data.withColumn('studentID',F.lit(students_data["studentID"][2:]))
TypeError: startPos and length must be the same type. Got <class 'int'> and <class 'NoneType'>, respectively.
students\u data=students\u data.withColumn('studentID',F.lit(students\u data[“studentID”][2:]))
TypeError:startPos和length必须是相同的类型。分别得到和。
来自pyspark.sql的导入函数为F
#从OP复制样本数据。
学生\u data=sqlContext.createDataFrame(
[1901000200,'M'],
[1901000500,'M'],
[1901000500,'M'],
[1901000500,'M'],
[1901000500,'M']],
[“学生ID”、“性别”])
#与简单的python列表转换不同,我们需要定义转换中的最后一个位置
#如果您不确定长度,可以定义一个随机的大数字,比如10k。
students\u data=students\u data.withColumn(
“学生ID”,
F.lit(学生数据[“学生ID”][4:10000])。演员阵容(“字符串”))
学生_data.show()
输出:
+---------+------+
|studentID|gender|
+---------+------+
| 1000200| M|
| 1000500| M|
| 1000500| M|
| 1000500| M|
| 1000500| M|
+---------+------+
是的,我也是这样做的,但是当我尝试再次将
studentID
转换为int时,它给了我一些奇怪的负整数值。