我的数据框有超过4200万条记录。
# Number of rows and columns in the dataset
print((df.count(), len(df.columns)))
(42448764, 9)
在品牌一栏,它有3000多个公司名称。为了分析的目的,我需要减少品牌名称与“其他”排除前20名的品牌。然后它在我的数据框中创建了21个独特的品牌(20个顶级品牌+其他品牌作为剩余品牌)。
current Brand list#
+-----------+------+
| brand| count|
+-----------+------+
| samsung|172896|
| apple|142873|
| null| 58214|
| xiaomi| 56616|
| huawei| 23501|
| lucente| 11578|
| oppo| 10891|
| cordiant| 10551|
| lg| 8727|
| acer| 6882|
| sony| 6729|
| elenberg| 6190|
| artel| 6124|
| triangle| 5835|
| bosch| 5705|
| indesit| 5024|
| nokian| 4907|
| lenovo| 4578|
| philips| 4463|
| vitek| 4107|
| redmond| 4003|
| beko| 3961|
| hp| 3596|
| dauscher| 3531|
| tefal| 3353|
| haier| 3072|
| stels| 3043|
| yokohama| 2735|
| casio| 2687|
| polaris| 2593|
| jbl| 2439|
| midea| 2334|
| nokia| 2222|
| viatti| 2154|
| vivo| 2025|
| force| 1957|
| starline| 1954|
| rowenta| 1885|
| respect| 1857|
| asus| 1850|
| pioneer| 1833|
| meizu| 1735|
| matador| 1711|
| kivi| 1584|
| ariston| 1513|
| braun| 1433|
Expected Brands#
+-----------+------+
| samsung|172896|
| apple|142873|
| xiaomi| 56616|
| huawei| 23501|
| lucente| 11578|
| oppo| 10891|
| cordiant| 10551|
| lg| 8727|
| acer| 6882|
| sony| 6729|
| elenberg| 6190|
| artel| 6124|
| triangle| 5835|
| bosch| 5705|
| indesit| 5024|
| nokian| 4907|
| lenovo| 4578|
| philips| 4463|
| vitek| 4107|
| redmond| 4003|
| Others|3XXXXX|
需要使用pyspark来减少数据框中的品牌名称。如何将列中的多个值替换为排除少数值的单个值?
1条答案
按热度按时间gkl3eglg1#
您可以基于计数分配一个行号,然后将Dataframe分成两部分。对于行号<=20的行,保持其原样。剩下的,加一笔。最后,做一个联合所有的结合在一起。