我有一个SparkSQL DataFrame。
此数据中的某些条目为空,但它们的行为不像NULL或NA。我该如何删除它们?有任何想法吗?
在R中,我可以轻松删除它们,但在sparkR中,它表示S4系统/方法有问题。
谢谢。
最佳答案
SparkR Column提供了一个long list of useful methods,包括isNull
和isNotNull
:
> people_local <- data.frame(Id=1:4, Age=c(21, 18, 30, NA))
> people <- createDataFrame(sqlContext, people_local)
> head(people)
Id Age
1 1 21
2 2 18
3 3 NA
> filter(people, isNotNull(people$Age)) %>% head()
Id Age
1 1 21
2 2 18
3 3 30
> filter(people, isNull(people$Age)) %>% head()
Id Age
1 4 NA
请记住,SparkR中的
NA
和NaN
之间没有区别。如果您希望对整个数据帧进行操作,则可以使用一组NA functions,包括
fillna
和dropna
:> fillna(people, 99) %>% head()
Id Age
1 1 21
2 2 18
3 3 30
4 4 99
> dropna(people) %>% head()
Id Age
1 1 21
2 2 18
3 3 30
可以将两者都调整为仅考虑某些列子集(
cols
),并且dropna
具有一些其他有用的参数。例如,您可以指定最少数量的非空列:> people_with_names_local <- data.frame(
Id=1:4, Age=c(21, 18, 30, NA), Name=c("Alice", NA, "Bob", NA))
> people_with_names <- createDataFrame(sqlContext, people_with_names_local)
> people_with_names %>% head()
Id Age Name
1 1 21 Alice
2 2 18 <NA>
3 3 30 Bob
4 4 NA <NA>
> dropna(people_with_names, minNonNulls=2) %>% head()
Id Age Name
1 1 21 Alice
2 2 18 <NA>
3 3 30 Bob
关于r - 如何在SparkR中处理空条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31598611/