我正在使用以下代码遍历表中的所有单元格:
df.loc[(df["month"]=="january"),"a5"]=1
在a5列中,为month列中的值为“ january”的所有行分配值“ 1”。我想知道是否有办法将“ 1”分配给该行而不是该行。
我试图做
df.loc[(df["month"]=="january")+1,"a5"]=1
但是它不起作用。由于某种原因,我不太了解,:
df.loc[(df["month"]=="january")+2,"a5"]=1
将1分配给表示“一月”的行,并将其分配给下面的行。
答案 0 :(得分:0)
您可以执行以下操作。
import pandas as pd
df = pd.DataFrame.from_dict({'month':['j','k','j','k'],'a5':[10,10,10,10]})
index = (df["month"]=="j").shift(1) # shift by 1 after shifting first value will be nan so we need to fill that with False
index[0] = False #
df.loc[index,'a5']=1
print(df)
>>>
month a5
0 j 10
1 k 1
2 j 10
3 k 1
df['somthing'] = x
。如果条件满足,它将返回包含True
的Series,否则返回False
。 False
。 答案 1 :(得分:0)
df.loc[(df["month"]=="january"),"a5"]=1
然后使用shift将其移至下一行:
df["a5"].shift(1)
应该工作。