Задача курса

Выравнивание Series по индексу: откуда берётся NaN

Курс «NumPy и pandas: практический тренажёр» · урок «Создание и изменение столбцов: векторные выражения, loc и выравнивание по индексу»

Поймёте на примере, почему при присваивании Series порядок значений не всегда определяет результат.

Условие

Выравнивание Series по индексу: предсказание NaN при присваивании столбца

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая:

  1. Читает из stdin целое число n — количество строк DataFrame.
  2. Читает следующие n строк; каждая содержит два токена через пробел: целое число a и целое число b. Создаёт pd.DataFrame с именем df со столбцами 'A' и 'B' и стандартным RangeIndex от 0 до n-1.
  3. Читает одну строку с несколькими токенами через пробел — индексы (целые числа) для новой Series. Создаёт idx = [int(x) for x in line.split()].
  4. Читает следующую строку с таким же количеством токенов — значения (целые числа) для новой Series. Создаёт pd.Series с этими значениями и индексом idx, называет её s.
  5. Присваивает df['C'] = s — pandas выравнивает s по меткам индекса df.
  6. Выводит в stdout три строки:
  • Строка 1: значения столбца 'A' через пробел.
  • Строка 2: значения столбца 'C' через пробел, где NaN выводится строкой nan.
  • Строка 3: C_nan_count: <k>, где k — количество NaN в столбце 'C'.

Для вывода значений столбцов используйте следующий подход: для каждого элемента выводите nan если pd.isna(v), иначе — целое число через int(v). Элементы разделяйте пробелами.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

n
a_0 b_0
a_1 b_1
...
a_{n-1} b_{n-1}
idx_0 idx_1 ... idx_m
val_0 val_1 ... val_m
  • Первая строка: целое n (2 ≤ n ≤ 8).
  • Следующие n строк: пары целых чисел a b.
  • Строка с индексами Series: от 1 до n целых чисел из диапазона [0, n-1], все различные.
  • Строка со значениями Series: столько же целых чисел.

Формат вывода

Три строки:

  • Значения 'A' через пробел (целые числа).
  • Значения 'C' через пробел (целые числа).
  • C_nan_count: <k>.

Примеры

Пример 1

Ввод
4
10 2
20 5
30 1
40 3
0 2
100 300
Ожидаемый результат
10 20 30 40
100 nan 300 nan
C_nan_count: 2

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется