如何使用两行中的值在熊猫数据框中创建一列?

问题描述 投票:0回答:1

如何执行此操作?

初始Df:

    A B C D
0   0 1 0 0
1   1 1 1 1
2   0 0 1 1
3   0 1 0 1
4   1 1 0 0
5   1 1 1 0

最终Df:

    A B C D Param1 Param2 Param3 
0   0 1 0 0      0      0      0
1   1 1 1 1      3      1      0
2   0 0 1 1      0      2      2
3   0 1 0 1      1      1      1
4   1 1 0 0      1      1      1
5   1 1 1 0      1      2      0

基本上,我要做的是比较两个连续行上的值,并将这些比较的计数存储在新列中。

详细计算:对于第一行(索引0):Param1,Param2,Param3将等于0

  1. Param1:这是将预览行中的0更改为当前行中的1的次数的计数,例如(看索引1):索引0中的三个0在索引1中转换为1,因此Param1用于索引1 = 3
  2. Param2:这是上一行中当前行中保持不变的1的计数,示例(请看索引3):索引2中的索引2中的1保持不变,因此索引3的Param2 = 1
  3. Param3:这是前一行在当前行中更改为0的1的计数,示例(请参见索引2):在索引2中,索引1中的两个1更改为0,因此索引使用Param3 3 = 2
python pandas dataframe apply series
1个回答
0
投票

IIUC:

shift = df.shift()
df['Param1'] = (df.eq(1) & shift.eq(0)).sum(1)
df['Param2'] = (df.eq(1) & shift.eq(1)).sum(1)
df['Param3'] = (df.eq(0) & shift.eq(1)).sum(1)

输出:

   A  B  C  D  Param1  Param2  Param3
0  0  1  0  0       0     0.0     0.0
1  1  1  1  1       3     1.0     0.0
2  0  0  1  1       0     2.0     2.0
3  0  1  0  1       1     1.0     1.0
4  1  1  0  0       1     1.0     1.0
5  1  1  1  0       1     2.0     0.0
© www.soinside.com 2019 - 2024. All rights reserved.