web-dev-qa-db-ja.com

Pysparkデータフレームの列からnull値を削除する

私のデータフレームは以下のようになります

ID,FirstName,LastName

1,Navee,Srikanth

2,,Srikanth 

3,Naveen,

ここで私の問題ステートメントは、First Nameがnullであるため、行番号2を削除する必要があることです。

以下のpysparkスクリプトを使用しています

join_Df1= Name.filter(Name.col(FirstName).isnotnull()).show()

エラーが発生しています

  File "D:\0\NameValidation.py", line 13, in <module>
join_Df1= filter(Name.FirstName.isnotnull()).show()

TypeError: 'Column'オブジェクトは呼び出し不可能です

誰かがこれを解決するのを手伝ってくれませんか

5
Naveen Srikanth

DataFrame FirstNameにはNullではなく空の値があるようです。以下は、いくつかのオプションです。

df = sqlContext.createDataFrame([[1,'Navee','Srikanth'], [2,'','Srikanth'] , [3,'Naveen','']], ['ID','FirstName','LastName'])
df.show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  2|         |Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where(df.FirstName.isNotNull()).show() #This doen't remove null because df have empty value
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  2|         |Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where(df.FirstName != '').show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.filter(df.FirstName != '').show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where("FirstName != ''").show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+
9
Rakesh Kumar

あなたは以下のようにすべきです

join_Df1.filter(join_Df1.FirstName.isNotNull()).show

お役に立てれば!

4
koiralo

私はあなたが必要とするかもしれないものはこれnotnull()だと思います。

したがって、これはcsvファイル_my_test.csv_での入力です。

_ID,FirstName,LastName
1,Navee,Srikanth

2,,Srikanth

3,Naveen
_

コード:

_import pandas as pd
df = pd.read_csv("my_test.csv")

print(df[df['FirstName'].notnull()])
_

出力:

_  ID FirstName  LastName
0   1     Navee  Srikanth
2   3    Naveen       NaN
_

これはあなたが望むものです! df[df['FirstName'].notnull()]

df['FirstName'].notnull()の出力:

_0     True
1    False
2     True
_

これはデータフレームdfを作成します。ここでdf['FirstName'].notnull()Trueを返します

これはどのようにチェックされますか? df['FirstName'].notnull()FirstName列の値がnullでない場合はTrueを返し、そうでない場合はNaNが存在する場合はFalseを返します。

0
void