不正な行の削除
コメント行の削除に成功したら、データのおおまかな形式に関する情報がわかりました。DataFrame には最低でも 5 個のタブ区切りの列があるはずです。元の DataFrame は 1 列しかないので、タブ(\t)でデータを分割する必要があります。
DataFrame annotations_df はすでに利用可能で、コメント行は削除済みです。spark.sql.functions ライブラリはエイリアス F で利用できます。DataFrame の初期の行数は変数 initial_count に保存されています。
この演習はコースの一部です
PySpark でデータをクレンジングする
演習の手順
annotations_dfの列'_c0'をタブ文字で分割して、新しい変数tmp_fieldsを作成します。- 直前の手順で得たフィールド数を表す列
'colcount'をannotations_dfに新規作成します。 annotations_dfから、フィールドが 5 未満の行をすべて除外します。- DataFrame の行数を数え、
initial_countと比較します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Split _c0 on the tab character and store the list in a variable
tmp_fields = ____(annotations_df['_c0'], ____)
# Create the colcount column on the DataFrame
annotations_df = annotations_df.____('____', ____(____))
# Remove any rows containing fewer than 5 fields
annotations_df_filtered = annotations_df.____(~ (____))
# Count the number of rows
final_count = ____
print("Initial count: %d\nFinal count: %d" % (initial_count, final_count))