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

标签 python python-3.x 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'])

但是,这会引发语法错误。我看不出有什么方法可以在 Pandas 中做到这一点。我的实际数据框太复杂,所以我想为此提供一个通用的解决方案。有什么想法吗?

最佳答案

您可以使用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

关于python - 比较 pandas 数据框中的两列以创建第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440068/

相关文章:

python - 在 Python 中将 unicode 字符编码为 HTML 实体,不包括标签

python - 基于二维数组中的一列对数据进行分箱,并使用 cython 估计每个箱中的平均值

java - 从socket python服务器接收消息

python - 如何设置 Tkinter 小部件的大小(以像素为单位)?

python-3.x - 在python pandas中,如何使用where条件使用外连接?

python - Pandas :如何索引行?

python - 如何使用 pytube 从 Youtube 播放列表下载中间视频

python - 根据它们的交集在成对的项目中找到一条路径

python - pandas - 使用 for 循环将多列附加到数据框

python - DataFrame 对象在计算长度时不可调用