第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

比較 PySpark 中的 3 列

比較 PySpark 中的 3 列

蝴蝶不菲 2023-01-04 10:20:07
我想比較 PySpark 中的 3 列(百分比總和為 100%)以創(chuàng)建一個(gè)新列,其中包含 3 列中最大值的列名,或者如果最大值不是唯一的,則包含列的名稱(chēng)具有相同的值。我在這里看到了一些類(lèi)似的例子,但當(dāng)最大值不唯一時(shí),它們不處理這種情況。下面是我的蠻力解決方案,但是它需要很長(zhǎng)時(shí)間才能運(yùn)行變得毫無(wú)用處:df\  .withColumn("MaxName",       F.when( (col(A)>col(B)) & (col(A)>col(C)), "A")\      .when( (col(B)>col(A)) & (col(B)>col(C)), "B")\      .when( (col(C)>col(A)) & (col(C)>col(B)), "C")\      .when( (col(A)==col(B)) &\            (col(A)>col(C)) | (col(B)>col(C)), "AB")\      .when( (col(C)==col(B)) | (col(C)==col(A)) &\            (col(C)>col(B)) | (col(C)>col(A)), "CAB")\      .otherwise("ABC")有什么見(jiàn)解可以構(gòu)建更高效的解決方案嗎?
查看完整描述

1 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

如果我理解正確,你可以比較greatest并返回列名,然后連接: 示例:


輸入:


np.random.seed(111)

df = spark.createDataFrame(pd.DataFrame(np.random.randint(0,100,(5,5)),

                                        columns=list('ABCDE')))

df.show()


+---+---+---+---+---+

|  A|  B|  C|  D|  E|

+---+---+---+---+---+

| 84| 84| 84| 86| 19|

| 41| 66| 82| 40| 71|

| 57|  7| 12| 10| 65|

| 88| 28| 14| 34| 21|

| 54| 72| 37| 76| 58|

+---+---+---+---+---+

建議的解決方案:


import pyspark.sql.functions as F


cols = ['A','B','C']

df.withColumn("max_of_ABC",F.concat_ws("",

             *[F.when(F.col(i) == F.greatest(*cols),i) for i in cols])).show()


+---+---+---+---+---+----------+

|  A|  B|  C|  D|  E|max_of_ABC|

+---+---+---+---+---+----------+

| 84| 84| 84| 86| 19|       ABC|

| 41| 66| 82| 40| 71|         C|

| 57|  7| 12| 10| 65|         A|

| 88| 28| 14| 34| 21|         A|

| 54| 72| 37| 76| 58|         B|

+---+---+---+---+---+----------+


查看完整回答
反對(duì) 回復(fù) 2023-01-04
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)