我有一个用例,其中如果特定文件的err
列中至少有一条记录的值为err_present
,我希望将同一文件的其余记录标记为 Dataframe 中的bad_file
值。
输入 Dataframe
+-----------+---------+
|err |file_name|
+-----------+---------+
|err_present|f1 |
| |f1 |
| |f1 |
| |f2 |
| |f2 |
+-----------+---------+
上面的 Dataframe 中f1
file_name列为err_present
。因此,我希望在最终 Dataframe 中将包含f1
的其他行标记为bad_file
。
Desired output DF:
+--------+---------+
|err_present|file_name|
+--------+---------+--
|err_present| f1|
|bad_file | f1|
|bad_file | f1|
| null | f2|
| null | f2|
+--------+---------+
示例 Dataframe
df = spark.createDataFrame([('err_present', 'f1'), ('', 'f1'), ('', 'f1'),
('', 'f2'), ('', 'f2')]
, ['err', 'file_name'])
2条答案
按热度按时间uemypmqf1#
dl5txlt92#
如果字符串
"err_present"
在该特定分区中,则可以按file_name
来partition
,并创建一个名为err_present_in_group
的新列,即True
:然后,通过应用基于
err
和err_present
列中的值的条件,可以确定最终的err_present
列。