python - 创建一个由其他列组合而成的列

标签 python pandas dataframe

我有一个包含 3 列的 pandas 数据框,我想创建一个新列,如下所示:

import pandas as pd
import numpy as np
np.random.seed(2019)
df = pd.DataFrame(np.random.randn(5,3), columns=['A','B','C'])
cols = df.abs().idxmax(axis = 1)
cols
0    C
1    A
2    A
3    B
4    B
dtype: object

我想创建一个列 D,它采用索引 0 处的 C 的值、索引 1 处的 A 的值,等等。换句话说,D 根据对象 cols 从适当的列中获取值。我确信我可以循环索引并选择列,但是有更好的方法吗?

最佳答案

使用DataFrame.lookup :

print (df)
          A         B         C
0 -0.217679  0.821455  1.481278
1  1.331864 -0.361865  0.685609
2  0.573761  0.287728 -0.235634
3  0.953490 -1.689625 -0.344943
4  0.016905 -0.514984  0.244509

df['D'] = df.lookup(df.index, cols)
print (df)
          A         B         C         D
0 -0.217679  0.821455  1.481278  1.481278
1  1.331864 -0.361865  0.685609  1.331864
2  0.573761  0.287728 -0.235634  0.573761
3  0.953490 -1.689625 -0.344943 -1.689625
4  0.016905 -0.514984  0.244509 -0.514984

关于python - 创建一个由其他列组合而成的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55006272/

相关文章:

python - 如何在 Python 中获取全局变量?

python - 仅当一列中的值为空白、空或 NaN 时才更新另一列中的值

python - 比较数据帧的所有数字列对

删除包含零的行

Python 后端和 html/ajax 前端,需要为我的应用程序提供建议

python - 始终将用户包含在 django 模板上下文中

python - 对所有行中不包括空格的总字符求和 Python

python - Plotly Python - 标签值格式化

python - 列表理解可以分为两个列表吗?

python - 为什么在函数内部调用时 exec() 的工作方式不同以及如何避免它