Найти индекс строки, в которой все строки до этого индекса суммируют данное число - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть следующий фрейм данных:

|---------------------|------------------|
|        Cost         |    Country       |
|---------------------|------------------|
|          12         |         34       |
|---------------------|------------------|
|          20         |         34       |
|---------------------|------------------|
|          21         |         34       |
|---------------------|------------------|

Я хотел бы взять первые n строки, в которых значения затрат имеют сумму меньше 40. Следовательно, в случае, показанном вышеЯ хотел бы создать новый фрейм данных только с первых 2 строк.Есть ли эффективный способ сделать это в кадрах данных без итерации по каждой строке?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Вы можете использовать cumsum (), чтобы взять первые n строк, где значения затрат имеют сумму меньше 40.

df [df ['Cost']. Cumsum () <40]</p>

0 голосов
/ 10 февраля 2019

Можно использовать pandas.DataFrame.cumsum(), который возвращает совокупную сумму элементов DataFrame или Series:

df = pd.DataFrame({'Cost': [12, 20, 21], 'Country': [34, 34, 34]})
cumSumOfCost = df['Cost'].cumsum()
mask_cumSumBelow40 = cumSumOfCost < 40
df_sumBelow40 = df.loc[mask_sumBelow40]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...