我是python和spark的初学者。在创建 DataFrame 从 CSV 文件,我想知道如何修剪列。我试过:
DataFrame
CSV
df = df.withColumn("Product", df.Product.strip()) ``` `df` 是我的Dataframe, `Product` 是我表中的一列 但我总是看到错误: `Column object is not callable` 你有什么建议吗?
6pp0gazn1#
from pyspark.sql.functions import trim df = df.withColumn("Product", trim(col("Product")))
oymdgrw72#
从1.5版开始,spark sql提供了两个特定的函数来修剪空白, ltrim 以及 rtrim (在数据框文档中搜索“trim”);你需要导入 pyspark.sql.functions 第一。举个例子:
ltrim
rtrim
pyspark.sql.functions
from pyspark.sql import SQLContext from pyspark.sql.functions import * sqlContext = SQLContext(sc) df = sqlContext.createDataFrame([(' 2015-04-08 ',' 2015-05-10 ')], ['d1', 'd2']) # create a dataframe - notice the extra whitespaces in the date strings df.collect() # [Row(d1=u' 2015-04-08 ', d2=u' 2015-05-10 ')] df = df.withColumn('d1', ltrim(df.d1)) # trim left whitespace from column d1 df.collect() # [Row(d1=u'2015-04-08 ', d2=u' 2015-05-10 ')] df = df.withColumn('d1', rtrim(df.d1)) # trim right whitespace from d1 df.collect() # [Row(d1=u'2015-04-08', d2=u' 2015-05-10 ')]
jobtbby33#
pyspark版本的strip函数称为trim。trim将“为指定的字符串列从两端修剪空格”。确保先导入函数,然后将要修剪的列放入函数中。以下应起作用:
from pyspark.sql.functions import trim df = df.withColumn("Product", trim(df.Product))
9wbgstp74#
我是这样对待自由民主党的:
from pyspark.sql.functions import udf def trim(string): return string.strip() trim=udf(trim) df = sqlContext.createDataFrame([(' 2015-04-08 ',' 2015-05-10 ')], ['d1', 'd2']) df2 = df.select(trim(df['d1']).alias('d1'),trim(df['d2']).alias('d2'))
输出如下所示:
df.show() df2.show() +------------+------------+ | d1| d2| +------------+------------+ | 2015-04-08 | 2015-05-10 | +------------+------------+ +----------+----------+ | d1| d2| +----------+----------+ |2015-04-08|2015-05-10| +----------+----------+
8fsztsew5#
如果需要对Dataframe中的所有列执行此操作。
from pyspark.sql import functions as f for colname in df.columns: df = df.withColumn(colname, f.trim(f.col(colname)))
5条答案
按热度按时间6pp0gazn1#
oymdgrw72#
从1.5版开始,spark sql提供了两个特定的函数来修剪空白,
ltrim
以及rtrim
(在数据框文档中搜索“trim”);你需要导入pyspark.sql.functions
第一。举个例子:jobtbby33#
pyspark版本的strip函数称为trim。trim将“为指定的字符串列从两端修剪空格”。确保先导入函数,然后将要修剪的列放入函数中。
以下应起作用:
9wbgstp74#
我是这样对待自由民主党的:
输出如下所示:
8fsztsew5#
如果需要对Dataframe中的所有列执行此操作。