一列中的值基于另一列中的条件

2024-04-25 19:58:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

Data = {'group':  ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'],
        'value1': [2, 0, 0, 5, 5, 5, 6, 31, 7, 5, 0, 99],
        'value2': [25, 12 ,15, 11, 36, 3, 65, 6, 89, 8, 74, 5]
        }

current_result = pd.DataFrame(Data, columns = ['group','value1', 'value2'])

如果对应的value1等于零,同时保持所有其他值不变,我想将value2设置为零。所以我想要的结果是:

Data = {'group':  ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'],
        'value1': [2, 0, 0, 5, 5, 5, 6, 31, 7, 5, 0, 99],
        'value2': [25, 0 ,0, 11, 36, 3, 65, 6, 89, 8, 0, 5]
        }

current_result = pd.DataFrame(Data, columns = ['group','value1', 'value2'])

我怎么能这么做?你知道吗


Tags: columns数据dataframedatagroupresultcurrentpd
3条回答

您可以通过布尔掩码进行倍数-True是类似于1的进程,False类似于0,因此通过^{}比较不相等的0

current_result['value2'] *= current_result['value1'].ne(0)
print (current_result)
   group  value1  value2
0      a       2      25
1      b       0       0
2      c       0       0
3      d       5      11
4      e       5      36
5      f       5       3
6      g       6      65
7      h      31       6
8      i       7      89
9      j       5       8
10     k       0       0
11     l      99       5

使用此选项:

current_result.loc[current_result['value1'] == 0, ['value2']] = 0

使用^{}

current_result.loc[current_result.value1.eq(0),'value2']=current_result.value1
print(current_result)

   group  value1  value2
0      a       2      25
1      b       0       0
2      c       0       0
3      d       5      11
4      e       5      36
5      f       5       3
6      g       6      65
7      h      31       6
8      i       7      89
9      j       5       8
10     k       0       0
11     l      99       5

相关问题 更多 >