我有df
个数据框:
artist track class1 class2 class3
0 Portishead Roads 0.98 0.02 0.0
1 Yo La Tengo Our Way to Fall 0.14 0.86 0.0
2 Radiohead Fake Plastic Trees 0.03 0.97 0.0
给出这些用户输入:
input_value = 0.8
input_class = 'class2'
我使用以下代码根据class2 max value重新排序数据框:
for col in df.ix[:,'class1':'class3']:
if col == input_class:
reordered_df = df.iloc[(df[input_class] - input_value).argsort()]
像这样:
1 Yo La Tengo Our Way to Fall 0.14 0.86 0.0
2 Radiohead Fake Plastic Trees 0.03 0.97 0.0
0 Portishead Roads 0.98 0.02 0.0
但是,我仍然需要满足一个类条件,即class2值必须是每个行中最高的 float 值。换句话说:
0 Portishead Roads 0.98 0.02 0.0
应该放弃,因为最大值属于另一个类。
如何在上面的代码段中插入此条件?
答案 0 :(得分:2)
沿着列逐行查找max
,与class2
进行比较,然后相应地丢弃。
reordered_df
artist track class1 class2 class3
1 Yo La Tengo Our Way to Fall 0.14 0.86 0.0
2 Radiohead Fake Plastic Trees 0.03 0.97 0.0
0 Portishead Roads 0.98 0.02 0.0
reordered_df[reordered_df.max(1) == reordered_df.class2]
artist track class1 class2 class3
1 Yo La Tengo Our Way to Fall 0.14 0.86 0.0
2 Radiohead Fake Plastic Trees 0.03 0.97 0.0