Я создал следующий исходный DataFrame ( df ):
sales
10 200
12 2000
14 2001
16 7999
18 8000
20 8001
22 12000
Биннинг только возвращает:
10 Low
12 Low
14 Mid
16 Mid
18 Mid
20 High
22 High
Name: sales, dtype: category
Categories (3, object): [Low < Mid < High]
Пока , ОК.
Затем я определил df_all со следующим содержимым:
xxxx
8 100
10 120
11 130
12 140
13 150
14 160
16 170
17 180
18 190
19 200
30 210
32 230
Обратите внимание, что он:
- содержит некоторые дополнительные "значения индекса (отсутствуют в df ),
- действительно ли не содержат некоторые значения индекса из df (а именно 20 и 22 * 1032 *).
Теперь, когда вы сохраняете результат объединения в df_all и распечатываете новый столбец, результат будет:
8 NaN
10 Low
11 NaN
12 Low
13 NaN
14 Mid
16 Mid
17 NaN
18 Mid
19 NaN
30 NaN
32 NaN
Name: df_newcol, dtype: category
Categories (3, object): [Low < Mid < High]
Как видите, содержит некоторые NaN s.
Причина в том, что результат cut равен скорректировано по индексу целевого DataFrame, например:
- Строки с ключами, отсутствующими в df receive NaN .
- Значения с ключами, отсутствующими в df_all , теряются.
И, наверное, так и случилось написано в вашем окружении. Очевидно, df_all содержит некоторые дополнительные индексы по сравнению с df , и им было дано NaN s.
Edit
df может также содержать значения вне данного набора ячеек, и результат объединения для таких строк будет также NaN .