pysparkの2つのデータフレームの間で減算を実行したい。データフレームを減算しながらいくつかの列を無視しなければならないという課題があります。しかし、最後のデータフレームには、無視された列を含むすべての列が含まれている必要があります。ここでPySpark:一部の列を無視してデータフレームを減算する
は一例です:
期待userLeft = sc.parallelize([
Row(id=u'1',
first_name=u'Steve',
last_name=u'Kent',
email=u'[email protected]',
date1=u'2017-02-08'),
Row(id=u'2',
first_name=u'Margaret',
last_name=u'Peace',
email=u'[email protected]',
date1=u'2017-02-09'),
Row(id=u'3',
first_name=None,
last_name=u'hh',
email=u'[email protected]',
date1=u'2017-02-10')
]).toDF()
userRight = sc.parallelize([
Row(id=u'2',
first_name=u'Margaret',
last_name=u'Peace',
email=u'[email protected]',
date1=u'2017-02-11'),
Row(id=u'3',
first_name=None,
last_name=u'hh',
email=u'[email protected]',
date1=u'2017-02-12')
]).toDF()
:
ActiveDF = userLeft.subtract(userRight) ||| Ignore "date1" column while subtracting.
最終結果は "日付1" の列を含む次のようになります。
+----------+--------------------+----------+---+---------+
| date1| email|first_name| id|last_name|
+----------+--------------------+----------+---+---------+
|2017-02-08| [email protected]| Steve| 1| Kent|
+----------+--------------------+----------+---+---------+
はpyspark 1.6では利用できません。私はこれらのデータフレームのための特定の主キーを持っていません。私のデータフレームは実行時に生成されます。だから、私は列の詳細を知らない。しかし、私はいつも知っている、私は参加している間考慮したくないコラム。 – orNehPraka
'date1'を除くすべての列に参加したい場合、' userLeft.join(userRight、userLeft、[col!for userLeft.columns in col!= 'date1']、 "leftanti")オプションがあります。 nullでない場合は、空の文字列でnull値を入力する必要があります。 – Psidom