【发布时间】:2021-11-25 05:04:25
【问题描述】:
我有一个大约 5k 列和大约 1 M 行的表格,如下所示:
| ID | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8 | Col9 | Col10 | Col11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ID1 | 0 | 1 | 0 | 1 | 0 | 2 | 1 | 1 | 2 | 2 | 0 |
| ID2 | 1 | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 0 | 2 | 1 |
| ID3 | 1 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 1 | 1 | 1 |
| ID4 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
| ID5 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
我想从不同的列表中选择与列名匹配的不同列,并根据不同的条件对行进行子集化。例如,如果我的 list1 有 col1、col3、col4、col11,而 list2 有 col2、col6、col9、col10。我想将行过滤为 list1 == 0 AND list2 == 1。例如 df1 = df.filter((df.col1 == 0) & (df.col3 == 0) & (df.col4 == 0) & (df.col6== 1) & (df.col9 == 1) & (df.col10 == 1)) 。我希望从两个不同的列表中选择这些列,而不是每次都添加列名。如何使用 PySpark 实现这一目标?
【问题讨论】:
-
list1 == 0是否意味着所有选定列的所有值都是0?无论如何,它看起来很简单:选择列 + 过滤所有或部分列的所需值......还是我错过了什么? -
是的,列表 1 中的所有匹配列的值都应为 0,列表 2 中的所有匹配列的值应为 1。我很困惑如何根据两个或多个不同的条件进行过滤。例如
df1 = df.filter((df.col1 == 0) & (df.col3 == 0) & (df.col4 == 0) & (df.col6== 1) & (df.col9 == 1) & (df.col10 == 1))。我希望从两个不同的列表中选择这些列,而不是每次都添加列名。
标签: python pyspark databricks