Pandas-iloc-将值与下面的单元格进行比较

问题描述

对于下表:

enter image description here

使用Pandas-我想实现desired_output列,当当前单元格下面的值不同时为TRUE-否则为FALSE。

我尝试了以下代码-但发生错误

 <span class="highlight"></span>Hat</span> Manufacturers

解决方法

Series.ne与具有Series.shift的值进行比较,并将第一个缺失值替换为原始值:

df = pd.DataFrame({'city':list('mmmssb')})

df['out'] = df['city'].ne(df['city'].shift(fill_value=df['city'].iat[0]))
print (df)
  city    out
0    m  False
1    m  False
2    m  False
3    s   True
4    s  False
5    b   True

对于较旧的熊猫版本,如果没有使用列city中的缺失值,请用Series.fillna替换第一个缺失值:

df['out'] = df['city'].ne(df['city'].shift().fillna(df['city']))
,
df['desired_output'] = df['city'].shift().bfill() != df['city']