调整 Pyspark 数据框中 CSV 文件数据的错误数据
Adjusting incorrect data of a CSV file data in a Pyspark dataframe
我正在尝试将 CSV 文件读入 Pyspark 中的数据帧,但我有一个包含混合数据的 CSV 文件。它的部分数据属于它的相邻列。有什么方法可以修改 python 中的数据帧以获得预期的输出数据帧。
CSV 样本
ID , Name
'1' , 'Alice'
'2B' , 'ob'
'3Ri' , 'chard'
预期输出
ID, Name
1, 'Alice'
2, 'Bob'
3, 'Richard'
您可以使用 pyspark.sql.functions
中的 regexp_extract
来做到这一点。
我的方法是这样的:
#read with a different separator so df generated with a single column
df = spark.read.csv('filename',header=True,sep='|')
#renamed the column name with irr (to make it easy to call)
newcolnames=['irr']
for c,n in zip(df.columns,newcolnames):
df=df.withColumnRenamed(c,n)
df.withColumn('ID',regexp_extract(df['irr'],r'(\d+)',1))
.withColumn('Name',regexp_extract(df['irr'],'your_regex_pattern',0))
.drop(df['irr']).show()
我正在尝试将 CSV 文件读入 Pyspark 中的数据帧,但我有一个包含混合数据的 CSV 文件。它的部分数据属于它的相邻列。有什么方法可以修改 python 中的数据帧以获得预期的输出数据帧。
CSV 样本
ID , Name
'1' , 'Alice'
'2B' , 'ob'
'3Ri' , 'chard'
预期输出
ID, Name
1, 'Alice'
2, 'Bob'
3, 'Richard'
您可以使用 pyspark.sql.functions
中的 regexp_extract
来做到这一点。
我的方法是这样的:
#read with a different separator so df generated with a single column
df = spark.read.csv('filename',header=True,sep='|')
#renamed the column name with irr (to make it easy to call)
newcolnames=['irr']
for c,n in zip(df.columns,newcolnames):
df=df.withColumnRenamed(c,n)
df.withColumn('ID',regexp_extract(df['irr'],r'(\d+)',1))
.withColumn('Name',regexp_extract(df['irr'],'your_regex_pattern',0))
.drop(df['irr']).show()