Jar*_*red 15 python apache-spark pyspark
我在本地pyspark 1.4中乱搞数据帧,并且在使用drop duplicates方法时遇到问题.继续返回错误"AttributeError:'list'对象没有属性'dropDuplicates'".不太清楚为什么我似乎遵循最新文档中的语法.好像我错过了该功能的导入或其他东西.
#loading the CSV file into an RDD in order to start working with the data
rdd1 = sc.textFile("C:\myfilename.csv").map(lambda line: (line.split(",")[0], line.split(",")[1], line.split(",")[2], line.split(",")[3])).collect()
#loading the RDD object into a dataframe and assigning column names
df1 = sqlContext.createDataFrame(rdd1, ['column1', 'column2', 'column3', 'column4']).collect()
#dropping duplicates from the dataframe
df1.dropDuplicates().show()
Run Code Online (Sandbox Code Playgroud)
zer*_*323 30
这不是一个进口问题.你只需要.dropDuplicates()一个错误的对象.类的sqlContext.createDataFrame(rdd1, ...)是pyspark.sql.dataframe.DataFrame,在你应用.collect()它之后是一个普通的Python list,并且列表不提供dropDuplicates方法.你想要的是这样的:
(df1 = sqlContext
.createDataFrame(rdd1, ['column1', 'column2', 'column3', 'column4'])
.dropDuplicates())
df1.collect()
Run Code Online (Sandbox Code Playgroud)
Gra*_*non 11
如果您有一个数据框并希望删除所有重复项 - 引用特定列中的重复项(称为"colName"):
在重复数据删除前计算
df.count()
Run Code Online (Sandbox Code Playgroud)
进行重复数据删除(将要重复删除的列转换为字符串类型):
from pyspark.sql.functions import col
df = df.withColumn('colName',col('colName').cast('string'))
df.drop_duplicates(subset=['colName']).count()
Run Code Online (Sandbox Code Playgroud)
可以使用已排序的组来检查是否已删除重复项:
df.groupBy('colName').count().toPandas().set_index("count").sort_index(ascending=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50206 次 |
| 最近记录: |