【问题标题】:if else in pyspark for collapsing column valuesif else 在 pyspark 中用于折叠列值
【发布时间】:2016-08-30 11:11:50
【问题描述】:

我正在尝试一个简单的代码在索引后将数据框中的分类变量折叠为二进制类 目前我的专栏有 3 个类——“A”、“B”、“C” 我正在编写一个简单的 if else 语句来折叠类,例如

def condition(r):
if (r.wo_flag=="SLM" or r.wo_flag=="NON-SLM"):
    r.wo_flag="dispatch" 
else: 
    r.wo_flag="non_dispatch" 
return r.wo_flag 

df_final=df_new.map(lambda x: condition(x)) 

它不工作它不理解 else 条件

|MData|Recode12|Status|DayOfWeekOfDispatch|MannerOfDispatch|Wo_flag|PlaceOfInjury|Race|
     M|      11|     M|                  4|               7|      C|           99| 1  |    
     M|       8|     D|                  3|               7|      A|           99| 1  |
     F|      10|     W|                  2|               7|      C|           99| 1  |
     M|       9|     D|                  1|               7|      B|           99| 1  |
     M|       8|     D|                  2|               7|      C|           99| 1  |

这是样本数据

【问题讨论】:

  • 您是否尝试在 wo_flag 列中将 'A' 、'B' 替换为 'dispatch' 和 'C' 替换为 'non_dispatch' ?
  • 添加一些示例数据(df 的样子)以及完整的错误消息,将有助于我们为您提供帮助。
  • @Himaprasoon 是的,这就是我想要做的,我还附上了 DF 的样子

标签: if-statement dataframe conditional-statements pyspark


【解决方案1】:

试试这个:

from pyspark.sql.types import StringType
from pyspark.sql.functions import udf

def modify_values(r):
    if r == "A" or r =="B":
        return "dispatch"
    else:
        return "non-dispatch"
ol_val = udf(modify_values, StringType())
new_df = df.withColumn("wo_flag",ol_val(df.wo_flag))

你做错的事情:

  • 您正在尝试修改行(行是不可变的)
  • 当对数据帧执行映射操作时,生成的数据结构是 PipelinedRDD 而不是数据帧。您必须申请 .toDF() 才能获取数据框

【讨论】:

    【解决方案2】:

    由于使用了用户定义函数 (UDF),因此接受的答案效率不高。

    我想大多数人都在寻找when

    from pyspark.sql.functions import when
    
    matches = df["wo_flag"].isin("SLM", "NON-SLM")
    new_df = df.withColumn("wo_flag", when(matches, "dispatch").otherwise("non-dispatch"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 2012-11-10
      • 2010-10-17
      • 2012-06-30
      • 1970-01-01
      • 2015-01-10
      • 2014-01-16
      相关资源
      最近更新 更多