pandas怎样判断行内的数据是否连续

ludun888 2018-08-13 11:13:05
用pandas读取txt文件,在读取的文件中判断行内数据是否连续
数据如下:
2,3,6,8,10,24,45
4,8,12,23,56,2,5
1,2,3,4,5,6,7
33,32,31,30,29,28,27
15,16,17,18,19,20,21
判断行内数据是否连续,如果连续,删除该行。
请大神出手,小白求问。谢谢回复!
...全文
1465 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈年椰子 2019-01-11
  • 打赏
  • 举报
回复
大概写了一下, 应该是这个意思吧


def check_value(dt):
d_flag = 0
for i in range(1,6):
d1 = 1 if ( abs(dt['d'+str(i)] - dt['d'+str(i+1)]) == 1 ) else 0
d_flag = d_flag + d1
return d_flag
data_cols = ['d1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7']
data_txt = pd.read_csv(r'd:\demo\test1.txt', names = data_cols)
data_txt['LEVEL'] = data_txt.apply(lambda x: check_value(x),axis=1)
df1 = data_txt[data_txt['LEVEL']<4]
print df1[data_cols]

ludun888 2018-08-17
  • 打赏
  • 举报
回复
大神帮忙啊!诚心求教!
ludun888 2018-08-14
  • 打赏
  • 举报
回复
厉害了,朋友,谢谢回复,费心了。但是这样写达不到要求。这样只能删除连续7位 的数字。
也是我的表述不清,我的意思是删除四连以上的连续数字。

谢谢朋友回复。最好用pandas。
S_Slan 2018-08-14
  • 打赏
  • 举报
回复
不好意思,没看清楚问题,你要用pandas
S_Slan 2018-08-14
  • 打赏
  • 举报
回复
我在pycharm里写了一下,很笨的方法,一起探讨下

import re
pattern=r'.*?([0-9]{1,3}).*?'
regex=re.compile(pattern,re.S)
filename=r'c:\tn.txt'
l,ll=[],[]
with open(filename,'r',encoding="utf-8") as fobj:
lines=fobj.readlines()
with open(filename, 'w',encoding="utf-8") as f_w:
for line in lines:
#用正则表达式把每行的内容读入列表
str=regex.findall(line)
for i in range(len(str)):
# 将列表的元素转为int,存入新列表
l.append(int(str[i]))
# 构建新列表ll,以l的第一个元素作为第一个元素,其他元素递增
ll=[l[0]+i for i in range(0,len(l))]
# 判断l和ll是否相同
if l==ll :
# 相同设置line为其他值
line='------\n'
# 把line写入文件
f_w.write(line)
l=[]
fobj.close()
f_w.close()

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧