пол серии для данного массива - PullRequest
1 голос
/ 20 февраля 2020

Как я могу эффективно поместить серию pandas (или уровень индекса) в заданный массив (Series, Index), т.е. сопоставить каждый элемент x в серии с максимальным элементом y в массиве floor так что y <= x?

Вот пример:

import pandas as pd

# the series
x = pd.Series([1.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.1, 11.11])

# the floor array
y = pd.Series([1.0, 4.0, 10.0])

# expected result (can be a numpy array, a Series, a list, etc...)
z = [1.0, 1.0, 1.0, 1.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 10.0, 10.0]

Можно предположить, что и серия, и массив отсортированы в порядке возрастания.

1 Ответ

2 голосов
/ 20 февраля 2020

Попробуйте pd.cut:

pd.cut(x, bins=list(y)+[np.inf], right=False, labels=y).astype(float)

Выход:

0      1.0
1      1.0
2      1.0
3      1.0
4      4.0
5      4.0
6      4.0
7      4.0
8      4.0
9      4.0
10    10.0
11    10.0
dtype: float64
...