[英]For loop on a column of dataframe in python
我的数据是这样的:
import numpy as np
import pandas as pd
s = pd.Series([True,True,True,False,True,False, False, True])
并且我想为彼此相邻的“ True”行分配相同的值(从1开始)。 并将0分配给“ False”值。
所以最终结果应该是这样的:
这是我编写的代码。 我没有收到任何错误,但它无法执行似乎永远运行的代码。 (我不知道为什么!)
s['values'] = None
j = 0
for ii in range(1, len(list1)):
if list1['delay'].iloc[ii] != list1['delay'].iloc[ii-1]:
j += 1
s['values'][ii] = j
(因为我想手动更改第一个值,所以我从1开始for循环)
请帮我解决一下这个。
试试这个,我分解了步骤。:)
import numpy as np
import pandas as pd
s = pd.Series([True,True,True,False,True,False, False, True])
b=s
b=b.astype(int).diff().fillna(0)
b=b.ne(0)
b[~s]=False
b=b.cumsum()+1
b[~s]=0
b
Out[116]:
0 1
1 1
2 1
3 0
4 2
5 0
6 0
7 3
dtype: int32
或使用for循环..
ll=[]
j=0
for i in range(0, len(s)):
if s[i]:
j += 1
try:
if s[i-1]:
j-=1
ll.append(j)
else:
ll.append(j)
except:ValueError
else:
ll.append(0)
[1]+ll
Out[135]: [1, 1, 1, 0, 2, 0, 0, 3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.