pyspark如何根據值添加選定列

對于下面的數據結構,我希望返回一個基于condition列的新數據幀。例如,如果"condition" =='A',新的數據幀在group1中應該有cols值,如果"condition" =='B',新的數據幀在group2中應該有cols值。問題是我不想硬編碼列名,因為在anothervalue之后可能有很多列。我怎么能這么做?非常感謝你的幫助。例如,對于這個輸入數據幀,

+---------+---------+---------+
|condition|   group1|   group2|
+---------+---------+---------+
|        A|{SEA, WA}|{PDX, OR}|
|        B| {NY, NY}| {LA, CA}|
+---------+---------+---------+

我想得到這個輸出:

+---------+---------+
|condition|   group |  
+---------+---------+
|        A|{SEA, WA}|
|        B| {LA, CA}|
+---------+---------+

上述輸入數據幀是使用此json架構創建的:

jsonStrings = ['{"condition":"A","group1":{"city":"SEA","state":"WA"},"group2":{"city":"PDX","state":"OR"}}','{"condition":"B","group1":{"city":"NY","state":"NY"},"group2":{"city":"LA","state":"CA"}}']
? 最佳回答:

您只需使用when并按如下所示構造條件的動態列表

from pyspark.sql.functions import *

conditions = when(col('condition') == 'A', col("group1"))\
    .when(col('condition') == 'B', col("group2")).otherwise(None)

df1.select(col('condition'), conditions.alias("group")).show(truncate=False)

Output:

+---------+---------+
|condition|group    |
+---------+---------+
|A        |{SEA, WA}|
|B        |{LA, CA} |
+---------+---------+
主站蜘蛛池模板: 上原亚衣一区二区在线观看| 国产一区三区二区中文在线| 蜜臀AV免费一区二区三区| 骚片AV蜜桃精品一区| 久久久一区二区三区| 日韩内射美女人妻一区二区三区| 久久一区二区三区精品| 精品国产乱码一区二区三区| 亚洲国产AV一区二区三区四区 | 久久综合亚洲色一区二区三区| 日韩一区二区电影| 亚洲AV成人一区二区三区在线看| 日韩色视频一区二区三区亚洲| 国产精品亚洲专一区二区三区| 精品日韩在线视频一区二区三区| 国产乱码精品一区二区三区中文| 日韩一区二区视频在线观看| 精品乱码一区二区三区在线| 日韩人妻一区二区三区蜜桃视频| 蜜桃AV抽搐高潮一区二区| 精品少妇一区二区三区视频| 精品国产亚洲一区二区三区在线观看| 一区二区三区国模大胆| 日韩电影一区二区| av无码人妻一区二区三区牛牛 | 国产精品538一区二区在线| 国产成人无码一区二区三区在线| 亚洲电影唐人社一区二区| 男人免费视频一区二区在线观看| 久久久无码精品国产一区| 久久国产高清一区二区三区| 竹菊影视欧美日韩一区二区三区四区五区 | 国产麻豆剧果冻传媒一区| 无码精品一区二区三区| 国产在线乱子伦一区二区| 免费无码毛片一区二区APP| 人妻天天爽夜夜爽一区二区| 国产AV一区二区三区传媒| 无码AV中文一区二区三区| 日韩好片一区二区在线看| 精品人无码一区二区三区|