我发现我的评论条数数据格式为:25 评分,明显数字后面有空格加评分2字,我统计时不需要这些
时间: 2024-04-09 21:33:01 浏览: 9
如果你的评论条数数据格式为 "25 评分",你可以在统计时移除数字后面的空格和评分两个字。你可以使用 Spark 的字符串函数来实现这个操作。以下是修改后的代码示例:
```scala
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.{col, count, regexp_replace, row_number}
val result = data.withColumn("comment_count", regexp_replace(col("comment_count"), "\\s评分", ""))
.groupBy("booktype")
.agg(count("comment_count").alias("comment_count"))
.orderBy(col("comment_count").desc)
.withColumn("rank", row_number().over(Window.orderBy(col("comment_count").desc)))
result.show()
```
在这段代码中,我们首先使用`regexp_replace`函数将评论条数中的空格和评分替换为空字符串,从而移除它们。然后按照修改后的评论条数进行统计和排名。
请确保你已经导入所需的包,并将`data`替换为你实际的DataFrame。
相关问题
输出格式为顺序输出0~9出现的次数,每个数字后面有一个空格
好的,可以参考以下代码实现:
```python
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3]
num_count = {}
for num in num_list:
if num in num_count:
num_count[num] += 1
else:
num_count[num] = 1
for i in range(10):
print('{} '.format(num_count[i] if i in num_count else 0), end='')
```
输出结果为:
```
1 3 3 2 2 2 2 2 2 1
```
可以看到,按照顺序输出了0~9每个数字出现的次数,每个数字后面有一个空格。
Java编写程序实现从键盘读入一串数字,数字个数不限,个数字以空格分开,统计各数字出现的个数,格式如:数字2出现的次数为3 数字4出现的次数为1 ……
好的,下面是Java程序的实现。
```java
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine(); // 从键盘读入一行数字
String[] nums = input.split(" "); // 按空格分割数字
HashMap<String, Integer> map = new HashMap<>(); // 用哈希表统计数字出现个数
// 统计数字出现次数
for (String num : nums) {
if (map.containsKey(num)) {
map.put(num, map.get(num) + 1);
} else {
map.put(num, 1);
}
}
// 输出结果
for (String num : map.keySet()) {
System.out.println("数字" + num + "出现的次数为" + map.get(num));
}
}
}
```
输入示例:
```
1 2 3 4 5 6 7 8 9 1 2 3 4 5 1 2 3 1
```
输出示例:
```
数字1出现的次数为4
数字2出现的次数为3
数字3出现的次数为3
数字4出现的次数为2
数字5出现的次数为2
数字6出现的次数为1
数字7出现的次数为1
数字8出现的次数为1
数字9出现的次数为1
```