Python:如何选择有条件的列?

标签 python pandas

我有一个如下所示的数据框:

df
    id          d1         d2          d3         a1    a2       a3
0   474     0.000243    0.000243    0.001395    bank    bank    atm
1   964     0.000239    0.000239    0.000899    bank    bank    bank
2   4823    0.000472    0.000472    0.000834    fuel    fuel    fuel
3   7225    0.002818    0.002818    0.023900    bank    bank    fuel
4   7747    0.001036    0.001036    0.001415    dentist dentist bank

我想选择d1,d2d3中的最小值和对应的a1,a2a3

df
    id      d          a
0  474  0.000243     bank
1  964  0.000239     bank
2 4823  0.000472     fuel
3 7225  0.002818     bank
4 7747  0.001036     dentist

最佳答案

如果要按列表选择列,则按 DataFrame.idxmin 获取列名, 重命名列然后使用 DataFrame.lookupDataFrame.assign对于新列:

col1 = ['d1','d2','d3']
col2 = ['a1','a2','a3']

pos = df[col1].idxmin(axis=1).map(dict(zip(col1, col2)))

df = df[['id']].assign(d = df[col1].min(axis=1), a = df.lookup(df.index, pos))
print (df)
     id         d        a
0   474  0.000243     bank
1   964  0.000239     bank
2  4823  0.000472     fuel
3  7225  0.002818     bank
4  7747  0.001036  dentist

关于Python:如何选择有条件的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61887835/

相关文章:

python - ValueError : No axis named "type" for object type <class 'pandas. core.frame.DataFrame

python - 如何将 win32com Excel 工作表加载到 Pandas df?

Python telnet 库问题,没有设置陷阱级别就无法读取输出

python - Django 表单文本字段不显示

python - pandas python的算法思路

python - 从 pandas 转换为 numpy 时如何保留列名

python - Pyenv 没有选择其他 python 安装

python - 找到最低的测试分数和两个高分的平均值

python - 在Python中将多张Excel文件按一列拆分

python - 将数据拆分为单列