Python 如何检查同一数据帧列中的重复值,并通过基于频率删除行来应用if条件?
数据帧: 名称 位置 评级 频率 阿里 扁担饭 一颗星 1. 阿里 巴斯金罗宾 四星 3. 阿里 鸡饭 三星级 1. 阿里 烤肉架 双星 2. 李 炸薯条 一颗星 3. 阿布 麦当劳 三星级 3. 阿布 肯德基 三星级 1. 艾哈迈德 南多斯 三星级 2. 艾哈迈德 汉堡 双星 3. 艾哈迈德 烤肉串 一颗星 10 与最后一个排序索引一起使用:Python 如何检查同一数据帧列中的重复值,并通过基于频率删除行来应用if条件?,python,pandas,apache-spark,pyspark,apache-spark-sql,Python,Pandas,Apache Spark,Pyspark,Apache Spark Sql,数据帧: 名称 位置 评级 频率 阿里 扁担饭 一颗星 1. 阿里 巴斯金罗宾 四星 3. 阿里 鸡饭 三星级 1. 阿里 烤肉架 双星 2. 李 炸薯条 一颗星 3. 阿布 麦当劳 三星级 3. 阿布 肯德基 三星级 1. 艾哈迈德 南多斯 三星级 2. 艾哈迈德 汉堡 双星 3. 艾哈迈德 烤肉串 一颗星 10 与最后一个排序索引一起使用: df = (df.sort_values(['Frequency','Rating'], ascending
df = (df.sort_values(['Frequency','Rating'],
ascending=[False, True])
.drop_duplicates('name')
.sort_index())
print (df)
name Location Rating Frequency
1 Ali Baskin Robin 4 star 3
4 Lee Fries 1 star 3
5 Abu Mcdonald 3 star 3
9 Ahmad Kebab 1 star 10
与最后一个排序索引一起使用:
df = (df.sort_values(['Frequency','Rating'],
ascending=[False, True])
.drop_duplicates('name')
.sort_index())
print (df)
name Location Rating Frequency
1 Ali Baskin Robin 4 star 3
4 Lee Fries 1 star 3
5 Abu Mcdonald 3 star 3
9 Ahmad Kebab 1 star 10
派斯帕克解决方案。您可以在一个经过适当排序和分区的窗口上使用
row\u number
,并获得行号为1的行
from pyspark.sql import functions as F, Window
df2 = df.withColumn(
'rn',
F.row_number().over(Window.partitionBy('name').orderBy(F.desc('frequency')))
).filter('rn = 1').drop('rn')
df2.show()
+-----+------------+------+---------+
| name| Location|Rating|Frequency|
+-----+------------+------+---------+
|Ahmad| Kebab|1 star| 10|
| Abu| Mcdonald|3 star| 3|
| Lee| Fries|1 star| 3|
| Ali|Baskin Robin|4 star| 3|
+-----+------------+------+---------+
派斯帕克解决方案。您可以在一个经过适当排序和分区的窗口上使用
row\u number
,并获得行号为1的行
from pyspark.sql import functions as F, Window
df2 = df.withColumn(
'rn',
F.row_number().over(Window.partitionBy('name').orderBy(F.desc('frequency')))
).filter('rn = 1').drop('rn')
df2.show()
+-----+------------+------+---------+
| name| Location|Rating|Frequency|
+-----+------------+------+---------+
|Ahmad| Kebab|1 star| 10|
| Abu| Mcdonald|3 star| 3|
| Lee| Fries|1 star| 3|
| Ali|Baskin Robin|4 star| 3|
+-----+------------+------+---------+
你能告诉我你试过什么吗?什么不起作用?对于
Abu
需要3
,因为第一个值(也是最大值)是正确的,Abu应该是麦当劳。您能展示一下您尝试了什么吗?什么不起作用?对于Abu
需要3
,因为第一个值(也是最大值)是正确的,Abu应该是麦当劳sthx,你很聪明。嗯,我在这里看到一个错误,因为第一排是错误的,位置应该是巴斯金罗宾,频率最高。你太棒了。嗯,我在这里看到一个错误,因为第一行是错误的,位置应该是频率最高的巴斯金罗宾