python中dataframe列上的For循环
我的数据如下:python中dataframe列上的For循环,python,pandas,for-loop,Python,Pandas,For Loop,我的数据如下: import numpy as np import pandas as pd s = pd.Series([True,True,True,False,True,False, False, True]) 我想将相同的值从1开始分配给彼此相邻的真实行。并将0指定给假值 所以最终的结果应该是这样的: import numpy as np import pandas as pd s = pd.Series([True,True,True,False,True,False, False,
import numpy as np
import pandas as pd
s = pd.Series([True,True,True,False,True,False, False, True])
我想将相同的值从1开始分配给彼此相邻的真实行。并将0指定给假值
所以最终的结果应该是这样的:
import numpy as np
import pandas as pd
s = pd.Series([True,True,True,False,True,False, False, True])
这是我写的代码。我没有得到任何错误,但它无法执行它似乎永远运行的代码。我不知道为什么
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]