艾依古 发表于 2020-6-27 17:13:58

统计连续出现相同数值的次数应该怎样做呢?

读取csv文件,根据‘MM’列判断,若该列连续出现 3次'4M'则判定为"one year" ,选择 one year出现的开始时间存储到列表 YearList 中,最后,将列表 YearList保存到文本文件“YearDate.txt”中。

Twilight6 发表于 2020-6-27 17:18:09

把样本数据发下

艾依古 发表于 2020-6-27 17:27:35

Data   MM
001      4M
002      4M   
003      4M
004      2M
005      3M
006   4M
007   4M
008   4M
009   4M
010   4M
011   1M
012   3M

艾依古 发表于 2020-6-27 17:28:31

大概是这样,只取了前面一小部分

Twilight6 发表于 2020-6-27 17:36:44

艾依古 发表于 2020-6-27 17:27
Data   MM
001      4M
002      4M   


data 是时间?

艾依古 发表于 2020-6-27 17:39:52

嗯嗯,是滴

艾依古 发表于 2020-6-27 18:12:02

题目里给的提示案例有这个。
参考案例:计算一个列表中连续相同的元素个数,并返回连续出现 4 次及以上
的 1 所在的开始位置。
import itertools
mylist =
num_times = [(k, len(list(v))) for k, v in itertools.groupby(mylist)]
print(num_times)
sumIndexList = []#存储符合要求的元素首次出现的位置
for i in range(len(num_times)):
if num_times == 1 and num_times >= 4:
sumIndex = 0
while i >= 1:
sumIndex += num_times
i = i - 1
sumIndexList.append(sumIndex)
print("符合要求的元素首次出现的位置列表为:",sumIndexList)结果:
输出结果:
[(1, 2), (0, 1), (1, 3), (0, 4), (1, 4), (0, 1), (1, 1), (0, 1), (11, 1), (0, 1)]
符合要求的元素首次出现的位置列表为:

Twilight6 发表于 2020-6-27 18:29:14

本帖最后由 Twilight6 于 2020-6-27 18:31 编辑

艾依古 发表于 2020-6-27 18:12
题目里给的提示案例有这个。
参考案例:计算一个列表中连续相同的元素个数,并返回连续出现 4 次及以上
...


这样可否?

import pandas as pd


dp = pd.read_csv('你的文件名')
count = 0
mylist = []
for i in dp.iterrows():
    if i['MM'] == '4M':
      count += 1
    else:
      if count >= 3:
            mylist.append(i['Data']-1-count)
      count = 0
print(mylist)

艾依古 发表于 2020-6-27 18:58:36

可以麻烦用参考案例的代码做一下吗,题目好像要求按照参考代码来做?我不太明白怎么样可以将csv文件的某一列数据转化为list,参考案例的代码我也不太看的懂。

Twilight6 发表于 2020-6-27 20:08:01

本帖最后由 Twilight6 于 2020-6-27 20:27 编辑

艾依古 发表于 2020-6-27 18:58
可以麻烦用参考案例的代码做一下吗,题目好像要求按照参考代码来做?我不太明白怎么样可以将csv文件的某一 ...


你说是出现 3 次吧,不包含3次以上哈

import pandas as pd
import itertools
dp = pd.read_csv('urls.csv')
mylist = list(dp['MM'])
num_times = [(k, len(list(v))) for k, v in itertools.groupby(mylist)]
print(num_times)
sumIndexList = []
for i in range(len(num_times)):
    if num_times == '4M' and num_times == 3:
      sumIndex = 0
      while i >= 1:
            sumIndex += num_times
            i = i - 1
    if sumIndex not in sumIndexList:
      sumIndexList.append(sumIndex)
print("符合要求的元素首次出现的位置列表为:",sumIndexList)

艾依古 发表于 2020-6-27 20:15:37

包含三次以上,是不是只要把num_times == 3:改为num_times >= 3: 就可以了?

Twilight6 发表于 2020-6-27 20:26:06

艾依古 发表于 2020-6-27 20:15
包含三次以上,是不是只要把num_times == 3:改为num_times >= 3: 就可以了?

是的你下次回复别人记得点回复。。。我是正好回来看看才看到你的消息 不然都不知道你发了消息

Twilight6 发表于 2020-6-27 20:27:51

艾依古 发表于 2020-6-27 20:15
包含三次以上,是不是只要把num_times == 3:改为num_times >= 3: 就可以了?

代码有些改动 你重新复制查看

艾依古 发表于 2020-6-27 20:28:52

Twilight6 发表于 2020-6-27 20:26
是的你下次回复别人记得点回复。。。我是正好回来看看才看到你的消息 不然都不知道你发了消息

好滴,太谢谢你了!这个和我刚刚求助的另一题是不是很相似啊?

Twilight6 发表于 2020-6-27 20:30:39

艾依古 发表于 2020-6-27 20:28
好滴,太谢谢你了!这个和我刚刚求助的另一题是不是很相似啊?

哪一题 最开始的嘛?

艾依古 发表于 2020-6-27 20:31:01

Twilight6 发表于 2020-6-27 20:27
代码有些改动 你重新复制查看

好滴,谢谢~

艾依古 发表于 2020-6-27 20:31:59

Twilight6 发表于 2020-6-27 20:30
哪一题 最开始的嘛?

是刚刚19点多求助的一道题

Twilight6 发表于 2020-6-27 20:40:42

艾依古 发表于 2020-6-27 20:31
是刚刚19点多求助的一道题

那个大佬帮你写了你问那个大佬吧,他数据处理比我厉害

艾依古 发表于 2020-6-27 20:49:24

Twilight6 发表于 2020-6-27 20:40
那个大佬帮你写了你问那个大佬吧,他数据处理比我厉害

好滴,谢谢你哦~

Twilight6 发表于 2020-6-27 20:53:06

艾依古 发表于 2020-6-27 20:49
好滴,谢谢你哦~

你是要等于 5 的? 如果连续 10次要算两次 5 嘛?
页: [1] 2
查看完整版本: 统计连续出现相同数值的次数应该怎样做呢?