Pyspark:複数の条件に基づいてデータフレームをフィルタリングします

所有者:

次の条件(d <5)と2番目(col1の値がcol3の対応する値と等しい場合、col2の値がcol4の対応する値と等しくない)に従ってデータフレームをフィルター処理したいと思います。

元のデータフレームDFが次の場合:

+----+----+----+----+---+
|col1|col2|col3|col4|  d|
+----+----+----+----+---+
|   A|  xx|   D|  vv|  4|
|   C| xxx|   D|  vv| 10|
|   A|   x|   A|  xx|  3|
|   E| xxx|   B|  vv|  3|
|   E| xxx|   F| vvv|  6|
|   F|xxxx|   F| vvv|  4|
|   G| xxx|   G| xxx|  4|
|   G| xxx|   G|  xx|  4|
|   G| xxx|   G| xxx| 12|
|   B|xxxx|   B|  xx| 13|
+----+----+----+----+---+

必要なデータフレームは次のとおりです。

+----+----+----+----+---+
|col1|col2|col3|col4|  d|
+----+----+----+----+---+
|   A|  xx|   D|  vv|  4|
|   A|   x|   A|  xx|  3|
|   E| xxx|   B|  vv|  3|
|   F|xxxx|   F| vvv|  4|
|   G| xxx|   G|  xx|  4|
+----+----+----+----+---+

私が試したコードは期待どおりに機能しませんでした:

cols=[('A','xx','D','vv',4),('C','xxx','D','vv',10),('A','x','A','xx',3),('E','xxx','B','vv',3),('E','xxx','F','vvv',6),('F','xxxx','F','vvv',4),('G','xxx','G','xxx',4),('G','xxx','G','xx',4),('G','xxx','G','xxx',12),('B','xxxx','B','xx',13)]
df=spark.createDataFrame(cols,['col1','col2','col3','col4','d'])

df.filter((df.d<5)& (df.col2!=df.col4) & (df.col1==df.col3)).show()

+----+----+----+----+---+
|col1|col2|col3|col4|  d|
+----+----+----+----+---+
|   A|   x|   A|  xx|  3|
|   F|xxxx|   F| vvv|  4|
|   G| xxx|   G|  xx|  4|
+----+----+----+----+---+

望ましい結果を得るにはどうすればよいですか?

ポール;

論理条件が間違っています。IIUC、あなたが望むのは:

import pyspark.sql.functions as f

df.filter((f.col('d')<5))\
    .filter(
        ((f.col('col1') != f.col('col3')) | 
         (f.col('col2') != f.col('col4')) & (f.col('col1') == f.col('col3')))
    )\
    .show()

私はfilter()読みやすさのために2つの呼び出しにステップを分けましたが、同等に1行で行うことができます。

出力:

+----+----+----+----+---+
|col1|col2|col3|col4|  d|
+----+----+----+----+---+
|   A|  xx|   D|  vv|  4|
|   A|   x|   A|  xx|  3|
|   E| xxx|   B|  vv|  3|
|   F|xxxx|   F| vvv|  4|
|   G| xxx|   G|  xx|  4|
+----+----+----+----+---+

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

別のデータフレームの複数の条件に基づいてデータフレームをフィルタリングする

分類Dev

複数の列のNAに基づいてデータフレームをフィルタリングする

分類Dev

複数の条件に基づいてdata.frameのグループをフィルタリングします

分類Dev

複数の列の条件に基づいてパンダのデータフレーム行をフィルタリングする

分類Dev

複数の条件に基づいてPySparkデータフレームの行を削除します

分類Dev

特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

分類Dev

特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

分類Dev

forループを使用して複数のデータフレームのIDに基づいて行をフィルタリングする

分類Dev

pandasデータフレームの特定の条件に基づいて行をフィルタリングする

分類Dev

Pysparkは、データフレームgroupByに基づいて複数のファイルを作成します

分類Dev

Python2.7:groupbyの条件に基づいてデータフレームからグループをフィルタリングします

分類Dev

2つの列間の時間差に基づいてpysparkデータフレームをフィルタリングします

分類Dev

選択した列に基づいて重複行をフィルタリングし、パンダの別のデータフレームと比較します

分類Dev

指定された入力配列に基づいてデータフレームの配列列をフィルタリングします--Pyspark

分類Dev

パンダは最初のn行の条件に基づいてデータフレームをフィルタリングします

分類Dev

pandasデータフレームの条件に基づいて、セルを複数の行に分割/分解します

分類Dev

Python、Pandas:関数に基づいてデータフレームの行をフィルタリングする

分類Dev

条件に基づいてデータフレーム行をフィルタリングするパンダ

分類Dev

リストとデータフレームに基づいて複数の条件を持つデータフレームに新しい列を追加します

分類Dev

Pyspark: 行ごとの null 値の数に基づいてデータフレームをフィルタリングする

分類Dev

各データフレームの観測数に基づいてデータフレームのリストをフィルタリングする

分類Dev

Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

分類Dev

SQLは複数の条件に基づいて行をフィルタリングし、一致するレコードを取得します

分類Dev

条件に基づいてパンダのデータフレームをグループ化しますか?

分類Dev

Rの条件に基づいて、データフレームに複数の新しい列を追加します

分類Dev

Pyspark-1つの行の条件に基づいて複数の行をフィルターで除外します

分類Dev

リストに基づいてデータフレームをフィルタリングし、次にそのフィルターに基づいて各データフレームを保存します。関数またはforループを作成する方法はありますか?

分類Dev

名前を共有する複数の列に基づいてデータフレームをフィルタリングする

分類Dev

djangoでの条件と計算に基づいてMyDjangoデータをフィルタリングします

Related 関連記事

  1. 1

    別のデータフレームの複数の条件に基づいてデータフレームをフィルタリングする

  2. 2

    複数の列のNAに基づいてデータフレームをフィルタリングする

  3. 3

    複数の条件に基づいてdata.frameのグループをフィルタリングします

  4. 4

    複数の列の条件に基づいてパンダのデータフレーム行をフィルタリングする

  5. 5

    複数の条件に基づいてPySparkデータフレームの行を削除します

  6. 6

    特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

  7. 7

    特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

  8. 8

    forループを使用して複数のデータフレームのIDに基づいて行をフィルタリングする

  9. 9

    pandasデータフレームの特定の条件に基づいて行をフィルタリングする

  10. 10

    Pysparkは、データフレームgroupByに基づいて複数のファイルを作成します

  11. 11

    Python2.7:groupbyの条件に基づいてデータフレームからグループをフィルタリングします

  12. 12

    2つの列間の時間差に基づいてpysparkデータフレームをフィルタリングします

  13. 13

    選択した列に基づいて重複行をフィルタリングし、パンダの別のデータフレームと比較します

  14. 14

    指定された入力配列に基づいてデータフレームの配列列をフィルタリングします--Pyspark

  15. 15

    パンダは最初のn行の条件に基づいてデータフレームをフィルタリングします

  16. 16

    pandasデータフレームの条件に基づいて、セルを複数の行に分割/分解します

  17. 17

    Python、Pandas:関数に基づいてデータフレームの行をフィルタリングする

  18. 18

    条件に基づいてデータフレーム行をフィルタリングするパンダ

  19. 19

    リストとデータフレームに基づいて複数の条件を持つデータフレームに新しい列を追加します

  20. 20

    Pyspark: 行ごとの null 値の数に基づいてデータフレームをフィルタリングする

  21. 21

    各データフレームの観測数に基づいてデータフレームのリストをフィルタリングする

  22. 22

    Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

  23. 23

    SQLは複数の条件に基づいて行をフィルタリングし、一致するレコードを取得します

  24. 24

    条件に基づいてパンダのデータフレームをグループ化しますか?

  25. 25

    Rの条件に基づいて、データフレームに複数の新しい列を追加します

  26. 26

    Pyspark-1つの行の条件に基づいて複数の行をフィルターで除外します

  27. 27

    リストに基づいてデータフレームをフィルタリングし、次にそのフィルターに基づいて各データフレームを保存します。関数またはforループを作成する方法はありますか?

  28. 28

    名前を共有する複数の列に基づいてデータフレームをフィルタリングする

  29. 29

    djangoでの条件と計算に基づいてMyDjangoデータをフィルタリングします

ホットタグ

アーカイブ