Dataframe 当Pyspark数据帧中出现条件时
我有下面的数据框Dataframe 当Pyspark数据帧中出现条件时,dataframe,pyspark,.when,Dataframe,Pyspark,.when,我有下面的数据框 Column_1 Column_2 Column_3 A 1 A 2 A 3 A 4 A 5 B 1 B 4 B 5 C 1 C 2 我必须根据第1列和第2列中的值填充第3列。 如果列_1在('A','B')中,列_2不在('1','3',
Column_1 Column_2 Column_3
A 1
A 2
A 3
A 4
A 5
B 1
B 4
B 5
C 1
C 2
我必须根据第1列和第2列中的值填充第3列。
如果列_1在('A','B')中,列_2不在('1','3','5'),我必须用X或Y填充列_3
预期产出:
Column_1 Column_2 Column_3
A 1 Y
A 2 X
A 3 Y
A 4 X
A 5 Y
B 1 Y
B 4 X
B 5 Y
C 1 Y
C 2 Y
我尝试的是:
我尝试了when和other语句,但不确定如何使用not-in和when语句。
非常感谢您在这方面提供的任何帮助您可以利用
isin
和反向~
:
import pyspark.sql.functions as F
c = (F.when(df['Column_1'].isin(['A','B']) &
(~df['Column_2'].isin([1,3,5])),'X').otherwise('Y'))
df.withColumn("Column_3",c).show()
或:
更多详情:
df['Column_1'].isin(['A','B'])
#Column<b'(Column_1 IN (A, B))'>
~df['Column_2'].isin([1,3,5])
#Column<b'(NOT (Column_2 IN (1, 3, 5)))'>
df['Column_1'].isin(['A','B'])
#纵队
~df['Column_2'].isin([1,3,5])
#纵队
+--------+--------+--------+
|Column_1|Column_2|Column_3|
+--------+--------+--------+
| A| 1| Y|
| A| 2| X|
| A| 3| Y|
| A| 4| X|
| A| 5| Y|
| B| 1| Y|
| B| 4| X|
| B| 5| Y|
| C| 1| Y|
| C| 2| Y|
+--------+--------+--------+
df['Column_1'].isin(['A','B'])
#Column<b'(Column_1 IN (A, B))'>
~df['Column_2'].isin([1,3,5])
#Column<b'(NOT (Column_2 IN (1, 3, 5)))'>