2016-02-18 16 views
11

Có sự khác biệt trong ngữ nghĩa giữa df.na().drop()df.filter(df.col("onlyColumnInOneColumnDataFrame").isNotNull() && !df.col("onlyColumnInOneColumnDataFrame").isNaN()) nơi dfApache SparkDataframe?Sự khác nhau giữa na(). Thả() và bộ lọc (col.isNotNull) (Apache Spark)

Hoặc tôi sẽ xem xét nó như là một lỗi nếu người đầu tiên nó không trả về sau null (không phải là một chuỗi null, nhưng chỉ đơn giản là một giá trị null) trong cột onlyColumnInOneColumnDataFrame và điều thứ hai không?

EDIT: đã thêm !isNaN(). onlyColumnInOneColumnDataFrame là cột duy nhất trong Dataframe nhất định. Giả sử loại của nó là Integer.

+0

Ông có thể cung cấp một dữ liệu ví dụ? – zero323

+0

Tôi đã nhận thấy những 'null' với mã sau - https://gist.github.com/xjrk58/87dd094e2987ecc448db, nhưng sẽ cố gắng đơn giản hóa nó và cung cấp trường hợp có thể lặp lại với dữ liệu đầu vào. Để chính xác hơn sau khi gọi 'df.show()' trên dòng 4, cột "definitionId" chứa các giá trị 'null'. – JiriS

Trả lời

14

Với df.na.drop() bạn thả các hàng có chứa bất kỳ giá trị null hoặc NaN nào.

Với df.filter(df.col("onlyColumnInOneColumnDataFrame").isNotNull()) bạn thả những hàng có giá trị rỗng vào cột onlyColumnInOneColumnDataFrame.

Nếu bạn muốn đạt được điều tương tự, đó sẽ là df.na.drop(["onlyColumnInOneColumnDataFrame"]).

+0

Vấn đề là 'onlyColumnInOnColumnDataFrame' là cột duy nhất trong' DataFrame' đã cho và tôi đã thử cũng 'isNotNaN()' (hoặc có thể là '! IsNan()'), nhưng tôi vẫn nhận được null giá trị trong cột này sau khi lọc và câu hỏi là nếu nó là một lỗi hoặc tôi đang thiếu một cái gì đó. – JiriS

+0

Khi số 032 được yêu cầu, vui lòng cung cấp một số dữ liệu mẫu. –

+2

Daniel, nên gọi là df.na.drop() và df.na.drop (tập con = ["onlyColumnInOneColumnDataFrame"]) – sunny

0

Tôi không biết bạn có câu trả lời hay không. Nhưng điều này nên làm việc:

df.na.drop(subset=["onlyColumnInOneColumnDataFrame"]) 

hoặc thậm chí:

df.na.drop(how = 'any') 
+0

Câu hỏi về sự khác biệt giữa hàm – user7294900

Các vấn đề liên quan