我有一个如下所示的数据框:
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
,d2
和d3
中的最小值和对应的a1
,a2
或 a3
。
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.lookup
在 DataFrame.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/