gpt4 book ai didi

python - 给定最小/最大的多个两列集,如果数字落在最小/最大之间,如何返回索引

转载 作者:行者123 更新时间:2023-12-01 03:48:03 24 4
gpt4 key购买 nike

我的输入 CSV 如下所示

Tier    | A   |     | B   |     | C   |   
| Min | Max | Min | Max | Min | Max
1 | 0 | .5 | 0 | .25 | 0 | .92
2 |.51 | 1.0 | .26 | .50 | .93 | 1.5

给定一个输入字典 {A: .56, B: .22, C: .99} 我想返回 {A: 2, B: 1, C: 2} ,与数字在范围内的位置对应的层。

我的问题是我不确定如何将 header 读入多索引,或者即使它值得打扰。

目前我尝试的是将列彼此压缩,然后将它们转换为一个列元组,将元组存储在每个“A B C”集的每组最小/最大下。我还在考虑沿着最大列向下查找该数字所在的第一层。

但是这些似乎不是最好的方法,有什么建议吗?

最佳答案

跳过前几行。您可以使用 kwarg header=[0,1] 将前两行读取为 MultiIndex,但级别 0 中的缺失值会导致使用占位符名称(在没有“A”、“B”或“C”的列。

请参阅read_csv docs有关 args/kwargs 的更多详细信息。

df = pd.read_csv('tmp.csv', sep=' *\| *', skiprows=2, index_col=0, header=None)
df.columns = pd.MultiIndex.from_product([('A', 'B', 'C'), ('Min', 'Max')])

def get_indicator(letter, val, df):
m = (df[letter]['Min'] <= val) & (df[letter]['Max'] >= val)
m = m[m]
return None if m.empty else m.index[0]

d = {A: .56, B: .22, C: .99}

res = {k: get_indicator(k, v, df) for (k, v) in d.items()}

关于python - 给定最小/最大的多个两列集,如果数字落在最小/最大之间,如何返回索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663764/

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