Pyspark-データフレーム列の値を関数にフィードし、関数の出力を元のデータフレームに追加します

ジェロエン

値が「緯度」と「経度」のPYSPARKデータフレームdfがあります。

+---------+---------+
| latitude|longitude|
+---------+---------+
|51.822872| 4.905615|
|51.819645| 4.961687|
| 51.81964| 4.961713|
| 51.82256| 4.911187|
|51.819263| 4.904488|
+---------+---------+

データフレーム列からUTM座標(「x」と「y」)を取得したいと思います。これを行うには、値「longitude」と「latitude」をpyprojから次の関数にフィードする必要があります。結果の「x」と「y」は、元のデータフレームdfに追加されます。これは私がパンダでそれをした方法です:

from pyproj import Proj
pp = Proj(proj='utm',zone=31,ellps='WGS84', preserve_units=False)
xx, yy = pp(df["longitude"].values, df["latitude"].values)
df["X"] = xx
df["Y"] = yy

Pysparkでこれをどのように行いますか?

jxc

pandas_udfを使用して、関数に配列をフィードしてから、配列も返します。下記参照:

from pyspark.sql.functions import array, pandas_udf, PandasUDFType
from pyproj import Proj
from pandas import Series

@pandas_udf('array<double>', PandasUDFType.SCALAR)
def get_utm(x):
  pp = Proj(proj='utm',zone=31,ellps='WGS84', preserve_units=False)
  return Series([ pp(e[0], e[1]) for e in x ])

df.withColumn('utm', get_utm(array('longitude','latitude'))) \
  .selectExpr("*", "utm[0] as X", "utm[1] as Y") \
  .show()

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pysparkデータフレームは、2つの列に関数を適用します

分類Dev

pyspark [パンダ以外]のデータフレームの各行に対して関数を呼び出します

分類Dev

データブリックス上の別のpysparkデータフレームのいくつかの列に基づいて、大きなpysparkデータフレームの列に対してユーザー定義関数を実行します

分類Dev

pysparkデータフレーム文字列列から新しい列に最初の数値を取得します

分類Dev

Pyspark-datetime.time関数をデータフレームのすべての行に適用します

分類Dev

Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

分類Dev

pysparkデータフレームに別の列の最大値を持つ新しい列を追加します

分類Dev

ループを使用してpysparkデータフレームに複数の列を追加する

分類Dev

PySparkデータフレーム列の集計値を変数に格納します

分類Dev

複数の列の値をpysparkデータフレームの新しい列に保存する

分類Dev

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

分類Dev

Pyspark:指定された列の個別の値ごとにデータフレーム値を追加します

分類Dev

Pysparkの条件を使用したデータフレームのGroupby関数

分類Dev

ランダムな値の列をpysparkデータフレームに追加します

分類Dev

PySparkデータフレームにn行のキー要素を追加します

分類Dev

Pyspark-異なるデータフレームの値に基づいてデータフレームに列を追加します

分類Dev

リストの列を同じPySparkデータフレーム内の複数の列に分割します

分類Dev

pysparkデータフレームの単一の「when」関数で配列の各要素にOR演算子を使用する

分類Dev

Pyspark:関数で生成された列を新しいデータフレームに連結します

分類Dev

pysparkデータフレームの列を複製します

分類Dev

pysparkデータフレーム上のカスタム関数

分類Dev

pyspark で、データ フレームの列を介してフィルター関数をループする方法は?

分類Dev

pysparkの変数としてデータフレーム列とその値を取得します

分類Dev

pysparkデータフレームの列値をサニタイズします

分類Dev

pysparkデータフレームの列を小文字に変換します

分類Dev

リストをpysparkのデータフレーム列に変換します

分類Dev

XML列と複数の値を含むPysparkデータフレーム:列を抽出します

分類Dev

PySparkリストデータフレームのすべての要素の後に値を追加します

分類Dev

PySpark-データフレーム内の列データ型の数を表示します

Related 関連記事

  1. 1

    Pysparkデータフレームは、2つの列に関数を適用します

  2. 2

    pyspark [パンダ以外]のデータフレームの各行に対して関数を呼び出します

  3. 3

    データブリックス上の別のpysparkデータフレームのいくつかの列に基づいて、大きなpysparkデータフレームの列に対してユーザー定義関数を実行します

  4. 4

    pysparkデータフレーム文字列列から新しい列に最初の数値を取得します

  5. 5

    Pyspark-datetime.time関数をデータフレームのすべての行に適用します

  6. 6

    Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

  7. 7

    pysparkデータフレームに別の列の最大値を持つ新しい列を追加します

  8. 8

    ループを使用してpysparkデータフレームに複数の列を追加する

  9. 9

    PySparkデータフレーム列の集計値を変数に格納します

  10. 10

    複数の列の値をpysparkデータフレームの新しい列に保存する

  11. 11

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

  12. 12

    Pyspark:指定された列の個別の値ごとにデータフレーム値を追加します

  13. 13

    Pysparkの条件を使用したデータフレームのGroupby関数

  14. 14

    ランダムな値の列をpysparkデータフレームに追加します

  15. 15

    PySparkデータフレームにn行のキー要素を追加します

  16. 16

    Pyspark-異なるデータフレームの値に基づいてデータフレームに列を追加します

  17. 17

    リストの列を同じPySparkデータフレーム内の複数の列に分割します

  18. 18

    pysparkデータフレームの単一の「when」関数で配列の各要素にOR演算子を使用する

  19. 19

    Pyspark:関数で生成された列を新しいデータフレームに連結します

  20. 20

    pysparkデータフレームの列を複製します

  21. 21

    pysparkデータフレーム上のカスタム関数

  22. 22

    pyspark で、データ フレームの列を介してフィルター関数をループする方法は?

  23. 23

    pysparkの変数としてデータフレーム列とその値を取得します

  24. 24

    pysparkデータフレームの列値をサニタイズします

  25. 25

    pysparkデータフレームの列を小文字に変換します

  26. 26

    リストをpysparkのデータフレーム列に変換します

  27. 27

    XML列と複数の値を含むPysparkデータフレーム:列を抽出します

  28. 28

    PySparkリストデータフレームのすべての要素の後に値を追加します

  29. 29

    PySpark-データフレーム内の列データ型の数を表示します

ホットタグ

アーカイブ