比较pandas数据框中的两列以创建第三列

我有以下数据框:

In [25]: df1

Out[25]:

a b

0 0.752072 0.813426

1 0.868841 0.354665

2 0.944651 0.745505

3 0.485834 0.163747

4 0.001487 0.820176

5 0.904039 0.136355

6 0.572265 0.250570

7 0.514955 0.868373

8 0.195440 0.484160

9 0.506443 0.523912

现在,我想创建另一个列,df1['c']其值在df1['a']和之间最大df1['b']。因此,我希望将其作为输出:

In [25]: df1

Out[25]:

a b c

0 0.752072 0.813426 0.813426

1 0.868841 0.354665 0.868841

2 0.944651 0.745505 0.944651

3 0.485834 0.163747 0.485834

4 0.001487 0.820176 0.820176

我试过了 :

In [23]: df1['c'] = np.where(max(df1['a'], df1['b'], df1['a'], df1['b'])

但是,这会引发语法错误。我没有任何方法可以在熊猫中做到这一点。我的实际数据框太复杂了,因此我想为此提供一个通用的解决方案。有任何想法吗?

回答:

您可以使用Series.where

df['c'] = df.b.where(df.a < df.b, df.a)

print (df)

a b c

0 0.752072 0.813426 0.813426

1 0.868841 0.354665 0.868841

2 0.944651 0.745505 0.944651

3 0.485834 0.163747 0.485834

4 0.001487 0.820176 0.820176

5 0.904039 0.136355 0.904039

6 0.572265 0.250570 0.572265

7 0.514955 0.868373 0.868373

8 0.195440 0.484160 0.484160

9 0.506443 0.523912 0.523912

解决方案numpy.where

df['c'] = np.where(df['a'] > df['b'], df['a'], df['b'])

print (df)

a b c

0 0.752072 0.813426 0.813426

1 0.868841 0.354665 0.868841

2 0.944651 0.745505 0.944651

3 0.485834 0.163747 0.485834

4 0.001487 0.820176 0.820176

5 0.904039 0.136355 0.904039

6 0.572265 0.250570 0.572265

7 0.514955 0.868373 0.868373

8 0.195440 0.484160 0.484160

9 0.506443 0.523912 0.523912

或更简单的发现max

df['c'] = df[['a','b']].max(axis=1)

print (df)

a b c

0 0.752072 0.813426 0.813426

1 0.868841 0.354665 0.868841

2 0.944651 0.745505 0.944651

3 0.485834 0.163747 0.485834

4 0.001487 0.820176 0.820176

5 0.904039 0.136355 0.904039

6 0.572265 0.250570 0.572265

7 0.514955 0.868373 0.868373

8 0.195440 0.484160 0.484160

9 0.506443 0.523912 0.523912

以上是 比较pandas数据框中的两列以创建第三列 的全部内容, 来源链接: utcz.com/qa/418901.html

回到顶部