当列中的值更改时,Python Dataframe会生成二进制输出
我遇到了这个关于在数据帧中的值发生变化时查找的答案。我有一个类似的问题,但想产生一个二进制输出 我的代码:当列中的值更改时,Python Dataframe会生成二进制输出,python,pandas,dataframe,Python,Pandas,Dataframe,我遇到了这个关于在数据帧中的值发生变化时查找的答案。我有一个类似的问题,但想产生一个二进制输出 我的代码: df = A 0 10 1 20 2 20 3 50 4 50 5 30 df['B'] = df['A'].diff() df = A B 0 10 Nan 1 20 10 2 20 0 3 50 30 4 50 0 5 30 -20
df =
A
0 10
1 20
2 20
3 50
4 50
5 30
df['B'] = df['A'].diff()
df =
A B
0 10 Nan
1 20 10
2 20 0
3 50 30
4 50 0
5 30 -20
我期待这样的输出
df =
A B C
0 10 Nan 1
1 20 10 1
2 20 0 0
3 50 30 1
4 50 0 0
5 30 -20 1
您只需要另外一个步骤来检查
B
是否等于0
:
df['B'] = df.A.diff()
df['C'] = df.B.ne(0).view('i1')
print(df)
A B C
0 10 NaN 1
1 20 10.0 1
2 20 0.0 0
3 50 30.0 1
4 50 0.0 0
5 30 -20.0 1
不推荐,但既然您提出了要求,我们可以将其制作为带有
eval
的一行程序:
df['B'], df['C'] = df.assign(B=df.A.diff()).eval('B, B!=0')
我们能在一条线上完成吗?另外,代码中的
.view('i1')
是什么意思?我刚刚尝试了这个.diff().ne(0)
。它正在工作。这对我来说很好。添加了一行,尽管我会选择第一行,为了可读性<代码>视图将布尔值结果视为整数@