gpt4 book ai didi

python - 如何在 pandas 数据框上应用范围查找?

转载 作者:行者123 更新时间:2023-12-01 00:26:38 25 4
gpt4 key购买 nike

我有以下数据框

Name   X 
Jack 2
Ann 4
John 18

以及下面的查找表

X_Min X_Max Y
2 2
3 7 4
8 15 9
16 25

其中X_MinX_Max是第一个数据帧中查找值X的范围。我想将查找表应用于我的数据框以获得下面的结果

Name   X    Y(Targeted)
Jack 2 2
Ann 4 4
John 18 25

非常感谢

最佳答案

使用IntervalIndexX_Min 中第一个未定义的值替换为 -inf,并将 np.inf 的最后一个 X_Max 缺失值替换为:

print (df2)
X_Min X_Max Y
0 NaN 2.0 2
1 3.0 7.0 4
2 8.0 15.0 9
3 16.0 NaN 25


i = pd.IntervalIndex.from_arrays(df2['X_Min'].fillna(-np.inf),
df2['X_Max'].fillna(np.inf), 'both')
print (i)
IntervalIndex([[-inf, 2.0], [3.0, 7.0], [8.0, 15.0], [16.0, inf]],
closed='both',
dtype='interval[float64]')

可能的过滤值是 DataFrame.loc :

df1['Y(Targeted)'] = df2.set_index(i).loc[df1['X'], 'Y'].values
print (df1)

Name X Y(Targeted)
0 Jack 2 2
1 Ann 4 4
2 John 18 25

编辑:

如果只想使用 X_Max 列:

i = pd.IntervalIndex.from_arrays(df2['X_Max'].add(1).shift().fillna(-np.inf), 
df2['X_Max'].fillna(np.inf), 'both')
print (i)
IntervalIndex([[-inf, 2.0], [3.0, 7.0], [8.0, 15.0], [16.0, inf]],
closed='both',
dtype='interval[float64]')

关于python - 如何在 pandas 数据框上应用范围查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58536707/

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