pandas根据行值(条件)创建新列

Sri*_*mar 4 python pandas

我有一个这样的专栏,

A
1.0
1.0
2.0
3.0
4.0
5.0
5.0
5.0
Run Code Online (Sandbox Code Playgroud)

我需要根据条件创建一个新列,如果a [i]和[i-1]相同,则值为0,否则为1.

结果应该是这样的:

A       B
1.0     1
1.0     0
2.0     1
3.0     1   
4.0     1
5.0     1   
5.0     0   
5.0     0
Run Code Online (Sandbox Code Playgroud)

合适的熊猫方式呢?

jez*_*ael 5

通过松帕雷不相等创建布尔面具neshift编辑Series和转换为integer:

df['B'] = df['A'].ne(df['A'].shift()).astype(int)
print (df)
     A  B
0  1.0  1
1  1.0  0
2  2.0  1
3  3.0  1
4  4.0  1
5  5.0  1
6  5.0  0
7  5.0  0
Run Code Online (Sandbox Code Playgroud)

细节:

print (df['A'].ne(df['A'].shift()))
0     True
1    False
2     True
3     True
4     True
5     True
6    False
7    False
Name: A, dtype: bool
Run Code Online (Sandbox Code Playgroud)