繁体   English   中英

在python中的dataframe列上进行循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM