我有一个数据框
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
这不会修改单元格的值。