根据loc和iloc设置一个值

时间:2019-11-28 12:07:00

标签: python pandas while-loop

我有一个数据框

df

a   b   c
t  -2   8
l   5   4
t   3   9
t   2   6
l  -2   7
t  -1   3

我首先需要基于对列的过滤而不是对位置的过滤来修改单元格。 例如:

for i in df.a.unique():
    j=0
    while ((j< len(df[df.a==i])) and(df.loc[df.a==i, 'b'].iloc[j]<0)):
          df.loc[df.a==i, 'b'].iloc[j] = 0
df = df[df.b!=0]

所需结果将给出

a   b   c
l   5   4
t   3   9
t   2   6
l   -2  7
t   -1  3

所以,我需要的是,对于a中的每个唯一元素,我都希望保留b的第一个正值之后的所有值,并将其丢弃。

问题是,当我使用

df.loc[df.a==i, 'b'].iloc[j] = 0

这不会修改单元格的值。

0 个答案:

没有答案