При применении агрегирования к сгруппированному фрейму данных pandas агрегированные выходные данные содержат разные значения для агрегированных столбцов со всеми пропущенными значениями, в зависимости от типа столбца фрейма данных. Ниже приведен минимальный пример, содержащий одно непропущенное значение (целое число, строку и кортеж), одно значение NaN и одно значение None каждое:
Глядя на dtypes столбца 'a', можно увидеть, что это float64, object и object< /code> для a1, a2 и a3 соответственно. None в a1 преобразуется в NaN при создании кадра данных. Поэтому я бы имел следующее Ожидаемое поведение вывода:
b
0 3.0
1 NaN
2 NaN
Name: a, dtype: float64
b
0 tree
1 None
2 None
Name: a, dtype: object
b
0 (0, 1, 2)
1 None
2 None
Name: a, dtype: object
Почему агрегация изменяет данные с NaN на None для строки 1 в a2 и a3?< /strong> Поскольку столбец в любом случае относится к объекту dtype, не должно возникнуть проблем с возвратом NaN и None для строк 1 и 2 соответственно; и здесь мы не находимся в сценарии, в котором любая агрегируемая группа содержит как NaN, так и None. Документация (https://pandas.pydata.org/docs/referenc ... first.html) также не очень точна в отношении этого поведения, она просто упоминает возвращаемое значение для всех NA. -columns – нет данных.
Обновление:
Как упоминалось в ответе @mozway далее ниже, для чистых групп NaN/None,skipna=False может использоваться для сохранения NaN и None соответственно. Однако это не работает при наличии смешанных столбцов с неотсутствующими/отсутствующими значениями и столбцов со всеми пропущенными значениями (например, [[np.nan, None, 'tree'],[np.nan, None]] ), где нам все равно хотелось бы получить первое непропущенное значение, так как для этого потребуется передать Skipna=True.
При применении агрегирования к сгруппированному фрейму данных pandas агрегированные выходные данные содержат разные значения для агрегированных столбцов со всеми пропущенными значениями, в зависимости от типа столбца фрейма данных. Ниже приведен минимальный пример, содержащий одно непропущенное значение (целое число, строку и кортеж), одно значение NaN и одно значение None каждое: [code]import pandas as pd import numpy as np
a1.groupby('b')['a'].agg('first') a2.groupby('b')['a'].agg('first') a3.groupby('b')['a'].agg('first') [/code] Глядя на dtypes столбца 'a', можно увидеть, что это float64, object и object< /code> для a1, a2 и a3 соответственно. None в a1 преобразуется в NaN при создании кадра данных. Поэтому я бы имел следующее [b]Ожидаемое поведение вывода:[/b] [list] [*][code]a1[/code]: NaN для строк 1 и 2 (это так) [*][code]a2[/code]: NaN и None для строк 1 и 2 (не так) [*][code]a3[/code]: NaN и None для строк 1 и 2 (не тот случай) [/list] [b]Фактический результат :[/b] [code]b 0 3.0 1 NaN 2 NaN Name: a, dtype: float64
b 0 tree 1 None 2 None Name: a, dtype: object
b 0 (0, 1, 2) 1 None 2 None Name: a, dtype: object [/code] [b]Почему агрегация изменяет данные с NaN на None для строки 1 в a2 и a3?< /strong> Поскольку столбец в любом случае относится к объекту dtype, не должно возникнуть проблем с возвратом NaN и None для строк 1 и 2 соответственно; и здесь мы не находимся в сценарии, в котором любая агрегируемая группа содержит как NaN, так и None. Документация (https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.DataFrameGroupBy.first.html) также не очень точна в отношении этого поведения, она просто упоминает возвращаемое значение для всех NA. -columns – нет данных.
Обновление:[/b] Как упоминалось в ответе @mozway далее ниже, для чистых групп NaN/None,skipna=False может использоваться для сохранения NaN и None соответственно. Однако это не работает при наличии смешанных столбцов с неотсутствующими/отсутствующими значениями и столбцов со всеми пропущенными значениями (например, [[np.nan, None, 'tree'],[np.nan, None]] ), где нам все равно хотелось бы получить первое непропущенное значение, так как для этого потребуется передать Skipna=True.
При применении агрегирования к сгруппированному фрейму данных pandas агрегированные выходные данные содержат разные значения для агрегированных столбцов со всеми пропущенными значениями, в зависимости от типа столбца фрейма данных. Ниже приведен...
При применении агрегирования к сгруппированному фрейму данных pandas агрегированные выходные данные содержат разные значения для агрегированных столбцов со всеми пропущенными значениями, в зависимости от типа столбца фрейма данных. Ниже приведен...
У меня есть фрейм данных, который содержит следующую структуру:
А мне нужно проверить, присутствуют ли строки из столбца Имя из столбцов МНЕМОНИКА 1, 2, 3 и так далее, по контрольному списку, имеющему следующий формат:
p>
У меня есть фрейм данных, который содержит следующую структуру:
А мне нужно проверить, присутствуют ли строки из столбца Имя из столбцов МНЕМОНИКА 1, 2, 3 и так далее, по контрольному списку, имеющему следующий формат:
p>