gpt4 book ai didi

python - Pandas :如何使用查询来选择最接近的值

转载 作者:行者123 更新时间:2023-11-28 21:53:27 24 4
gpt4 key购买 nike

我使用的是 Pandas 0.13.0,我尝试获取两个最接近的值,如下所示。

索引按升序和唯一值排序。

import pandas as pd
import Quantities as pq

f = {
'A': [ 0.0, 0.1, 0.2, 0.5, 1.0] * pq.m,
'B': [10.0, 11.0, 12.0, 15.0, 20.0] * pq.kPa,
'C': [ a1, b1, c1, d1, e1]
}

df = pd.DataFrame(f)

df.set_index(df['A'], inplace=True)

DataFrame 给出:

in: print df

out:
A B C
A
0.00 0.00 m 10.0 kPa a1
0.10 0.10 m 11.0 kPa b1
0.20 0.20 m 12.0 kPa c1
0.50 0.50 m 15.0 kPa d1
1.00 1.00 m 20.0 kPa e1

我有一个值不在 A 列中:value_to_find = 0.15 m .此值在此过程中会发生变化,因此我无法对其进行硬编码。

我试图找到获得第一个值的最佳方法 just before和值 just after value_to_findA 栏中,然后返回列 AB .然后插入 value_to_find 以获得 B值(value)。

过滤后的结果:

      A       B       
A
0.10 0.10 m 11.0 kPa
0.20 0.20 m 12.0 kPa

在插值之前选择正确值的一种方法是:

filter_before = '%s <= %f' % ( 'A', value_to_find)
filter_after = '%s >= %f' % ( 'A', value_to_find)

然后:

df_before = df.query(filter_before)
df_after = df.query(filter_after )

value_before = df_before.loc[df_before['A'].idxmax(), ['A', 'B']]
value_after = df_before.loc[df_before['A'].idxmin(), ['A', 'B']]

有没有更好的方法呢?也许使用查询、 map 或类似的东西。

喜欢:filter_before = '%s <= %f | max(%s)' % ( 'A', value_to_find) (这个对我不起作用)

谢谢。

最佳答案

除非我误解了你的问题,否则我无需使用 query 即可得到你想要的输出:

value_to_find = 0.15
Min = df['A'] <= value_to_find
Max = df['A'] >= value_to_find
idx_Min = df.ix[Min, 'A'].idxmax()
idx_Max = df.ix[Max, 'A'].idxmin()
df.ix[idx_Min:idx_Max, ['A','B']]

A B
A
0.1 0.1 11
0.2 0.2 12

我没有使用 Quantities 模块,但这不应该在这里发挥作用。实际上,如果您找到与 value_to_find 完全匹配的结果,输出中将只有一行。

关于python - Pandas :如何使用查询来选择最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26335732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com