这是一个熊猫数据框的样本。我需要找到一个给定出价的特定行。例如,给定bid=5,我需要返回下表中对应的行。如果我输入了一个缺少的bid,例如bid=6,那么应该返回与小于input bid的最大bid对应的行。因此,在这种情况下,bid=5对应的行应该返回。在熊猫身上怎么做?

Bid Imp Click   Spend
3   13  0.97    2
4   13  1.89    7
5   79  34.98   130
7   83  37.52   140
8   88  38.52   144

最佳答案

我想这可以做到:

>>> df[(df['Bid']<=5)].iloc[-1,:]

Bid        5.00
Imp       79.00
Click     34.98
Spend    130.00
Name: 2, dtype: float64

如果你想要一只熊猫,只要做df[(df['Bid']<=5)].iloc[-1,:].to_frame().T
>>> df[(df['Bid']<=5)].iloc[-1,:].to_frame().T
   Bid   Imp  Click  Spend
2  5.0  79.0  34.98  130.0

对于缺少出价=6的情况,df[(df['Bid']<=6)].iloc[-1,:].to_frame().T将返回低于6的最近出价,也就是5。
>>> df[(df['Bid']<=6)].iloc[-1,:].to_frame().T
   Bid   Imp  Click  Spend
2  5.0  79.0  34.98  130.0

编辑
要确保数据帧按升序包含Bid,请执行以下操作:
>>> df = df.sort_values(by='Bid',ascending=True)

关于python - 通过 Pandas 列搜索值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48786759/

10-11 20:19