Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当列中的值更改时,Python Dataframe会生成二进制输出_Python_Pandas_Dataframe - Fatal编程技术网

当列中的值更改时,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)
。它正在工作。这对我来说很好。添加了一行,尽管我会选择第一行,为了可读性<代码>视图将布尔值结果视为整数@