我必须将df列Type的缺失值替换为80%的“R”值和20%的“NR”值,因此必须将16个缺失值替换为“R”值,将4个替换为“NR”值
| Id_a|国家|类型|
| --------------|--------------|--------------|
| a1|恩加尔恩||
| a2|恩加尔恩||
| b1|恩加尔恩||
| b2|恩加尔恩||
| c1|恩加尔恩||
| C2|恩加尔恩||
| Er3|恩加尔恩||
| PO9|恩加尔恩||
| EE4|恩加尔恩||
| E4|恩加尔恩||
| T5|恩加尔恩||
| u8|恩加尔恩||
| r4|恩加尔恩||
| zx1|恩加尔恩||
| 11d|恩加尔恩||
| 二十二|恩加尔恩||
| 2p|恩加尔恩||
| 3jk|恩加尔恩||
| 56小时|恩加尔恩||
| A78|恩加尔恩||
我的想法是创建一个这样的计数器,并为前16行截肢'R'和最后4截肢'NR',任何建议如何做到这一点?
window = Window.orderBy('Id_a')
Df= Df.withColumn('Counter',row_number().over(window))
Id_a | 国家 | 类型 | 计数器 |
---|---|---|---|
a1 | 恩加尔恩 | 1 | |
a2 | 恩加尔恩 | 二 | |
b1 | 恩加尔恩 | 三 | |
b2 | 恩加尔恩 | 四 | |
c1 | 恩加尔恩 | 五 | |
C2 | 恩加尔恩 | 六 | |
Er3 | 恩加尔恩 | 七 | |
PO9 | 恩加尔恩 | 八 | |
EE4 | 恩加尔恩 | 九 | |
E4 | 恩加尔恩 | 10个 | |
T5 | 恩加尔恩 | 十一 | |
u8 | 恩加尔恩 | 十二岁 | |
r4 | 恩加尔恩 | 十三 | |
zx1 | 恩加尔恩 | 十四岁 | |
11d | 恩加尔恩 | 十五岁 | |
二十二 | 恩加尔恩 | 十六岁 | |
2p | 恩加尔恩 | 十七岁 | |
3jk | 恩加尔恩 | 十八岁 | |
56小时 | 恩加尔恩 | 十九岁 | |
A78 | 恩加尔恩 | 二十 |
重要的是创建一种方法,下次如何复制这种情况,例如下次我可能必须替换70% R 30% NR,或15% R和85% NR等。
1条答案
按热度按时间lzfw57am1#
首先,你可以创建两个 Dataframe ,一个有空值,另一个没有空值,然后在空值的 Dataframe 上,你可以使用apache spark中的randomSplit函数将其拆分为2个 Dataframe ,使用你指定的比率,最后你可以将3个 Dataframe 合并以获得想要的结果: