Python 熊猫:如何查找范围之间的值索引

Python 熊猫:如何查找范围之间的值索引,python,pandas,dataframe,range,pandas-groupby,Python,Pandas,Dataframe,Range,Pandas Groupby,我有一个熊猫数据框,在“Num”列中有一系列数字 import pandas as pd numbers = np.array([10,15,60,45,37,28]) df = pd.DataFrame(numbers, columns= ['Num']) 我会找到满足条件的所有值的索引组合: numbers1+numbers2+... >= 70% of df['Num'].sum() df['Num'].sum()=195,因此136.5是70%。价值观的某些组合可能是: 10

我有一个熊猫数据框,在“Num”列中有一系列数字

import pandas as pd

numbers = np.array([10,15,60,45,37,28])
df = pd.DataFrame(numbers, columns= ['Num'])
我会找到满足条件的所有值的索引组合:

numbers1+numbers2+... >= 70% of df['Num'].sum()
df['Num'].sum()=195
,因此136.5是70%。价值观的某些组合可能是:

10+15+60 
15+60 
60+45+37
10+15+60+45+37+28 

等等。我将采用索引组合,最后,以最少的索引数获得70%以上的组合(/s)。

您可以在此处使用
itertools

import pandas as pd
import itertools
import numpy as np

numbers = np.array([10,15,60,45,37,28])
df = pd.DataFrame(numbers, columns= ['Num'])
total = int(df.sum())
list_n = list(df['Num'])
for L in range(0, len(list_n)+1):
    for subset in itertools.combinations(list_n, L):
        if sum(subset) > 0.7 * total:
            print(subset)

(60, 45, 37)
(10, 60, 45, 37)
(10, 60, 45, 28)
(15, 60, 45, 37)
(15, 60, 45, 28)
(15, 60, 37, 28)
(60, 45, 37, 28)
(10, 15, 60, 45, 37)
(10, 15, 60, 45, 28)
(10, 15, 60, 37, 28)
(10, 60, 45, 37, 28)
(15, 60, 45, 37, 28)
(10, 15, 60, 45, 37, 28)
当然,你可以完全跳过熊猫:

import itertools
import numpy as np

numbers = np.array([10,15,60,45,37,28])
total = sum(numbers)
for L in range(0, len(numbers)+1):
    for subset in itertools.combinations(numbers, L):
        if sum(subset) > 0.7 * total:
            print(subset)

(60, 45, 37)
(10, 60, 45, 37)
(10, 60, 45, 28)
(15, 60, 45, 37)
(15, 60, 45, 28)
(15, 60, 37, 28)
(60, 45, 37, 28)
(10, 15, 60, 45, 37)
(10, 15, 60, 45, 28)
(10, 15, 60, 37, 28)
(10, 60, 45, 37, 28)
(15, 60, 45, 37, 28)
(10, 15, 60, 45, 37, 28)

这里使用熊猫数据帧的原因是什么?@Serge Ballesta这只是一个示例代码。我正在研究一个更大的数据帧。它越大,我就越不愿意使用熊猫来满足这样的需求!几周前我开始和熊猫打交道,编码是一种爱好。谢谢你的建议。非常感谢你的纽约编码员。现在我将尝试获取索引。祝你周末愉快!