【发布时间】:2017-08-24 22:04:21
【问题描述】:
我对 Python 完全陌生,所以如果我的问题不完全清楚或太明显,我将感谢您的耐心等待。
我需要使用条件组织数据,然后使用新组织的数据创建新列。我创建了一个简短的示例来说明我的观点。假设 S 是我要组织和拆分的数据。
这是我需要做的:
通过计算相邻元素的比率来查找它们的可能性。例如,如果
1.3 > S[i]/S[i+1] > 0.80,值应该存储在一个系列中,比如a。如果不满足条件,则创建一个新系列
b以填充下一个S[i+1],直到满足条件。否则,创建一个新系列
c...并重新开始。
示例
S=pd.Series([9,9,10,11,12,10,22,23,21,20,21,33,35,37,34,50,51,56,48,51])
a =[]
b = []
c = []
d = []
i=0
j = 1
k=1
m=1
for i in range(0,19,1):
if 1.3 > S[i]/S[i+1] > 0.80:
a.append(S[i])
j +=1
else:
break
for i in range(j,19,1):
if 1.3 > S[i]/S[i+1] > 0.80:
b.append(S[i])
k +=1
else:
break
for i in range(j+k,19,1):
if 1.3 > S[i]/S[i+1] > 0.80:
c.append(S[i])
m +=1
else:
break
for i in range(j+k+m,19,1):
if 1.3 > S[i]/S[i+1] > 0.80:
d.append(S[i])
else:
break
print('a=',a,'b=',b,'c=',c,'d=',d)
a= [9, 9, 10, 11, 12]
b= [22, 23, 21, 20]
c= [33, 35, 37]
d= [50, 51, 56, 48]
这段代码有两个主要问题:
首先,有一个问题。缺少每个生成的系列的最后一个数字。例如,在系列b 中,缺少术语21。
其次,是否可以根据需要使用循环来生成系列?真实数据有 10000+ 行,可能需要数百个不同的系列。
感谢您的帮助!
【问题讨论】:
-
您在循环中使用全局变量,因此它们内部没有定义。您可以做的一件事是在使用它的循环内使用
global关键字,例如global variable_name。 -
@0decimal0 感谢您的及时。我不知道全球。会检查的。
标签: python pandas loops split series