126
>>> a
DataFrame[id: bigint, julian_date: string, user_id: bigint]
>>> b
DataFrame[id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint]
>>> a.join(b, a.id==b.id, 'outer')
DataFrame[id: bigint, julian_date: string, user_id: bigint, id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint]

2つid: bigintあり、1つを削除したいです。どのようにできるのか?

4

9 に答える 9

159

Spark のドキュメントを読むと、より簡単な解決策が見つかりました。

spark のバージョン 1.4 以降drop(col)、データフレームの pyspark で使用できる関数があります。

2通りの使い方ができます

  1. df.drop('age')
  2. df.drop(df.age)

Pyspark ドキュメント - ドロップ

于 2015-09-18T13:32:30.693 に答える
12

次のように、保持する列に明示的に名前を付けることができます。

keep = [a.id, a.julian_date, a.user_id, b.quan_created_money, b.quan_created_cnt]

または、より一般的なアプローチでは、リスト内包表記を介して特定の列を除くすべての列を含めます。たとえば、次のようになります ( のid列を除くb):

keep = [a[c] for c in a.columns] + [b[c] for c in b.columns if c != 'id']

最後に、結合結果を選択します。

d = a.join(b, a.id==b.id, 'outer').select(*keep)
于 2015-04-14T07:26:39.417 に答える
3

少し話が逸れるかもしれませんが、Scala を使用したソリューションを次に示します。から列Array名を作成しoldDataFrame、削除する列を削除します("colExclude")。次に、Array[Column]toselectを渡して展開します。

val columnsToKeep: Array[Column] = oldDataFrame.columns.diff(Array("colExclude"))
                                               .map(x => oldDataFrame.col(x))
val newDataFrame: DataFrame = oldDataFrame.select(columnsToKeep: _*)
于 2015-07-07T19:50:36.560 に答える
-2

次のように列を削除できます。

df.drop("column Name).columns

あなたの場合:

df.drop("id").columns

複数の列を削除したい場合は、次のことができます。

dfWithLongColName.drop("ORIGIN_COUNTRY_NAME", "DEST_COUNTRY_NAME")
于 2019-06-06T08:14:34.230 に答える