Рассмотрим следующий кадр данных:
b c d e f g h
0 6.25 2018-04-01 True NaN 7 54.0 64.0
1 32.50 2018-04-01 True NaN 7 54.0 64.0
2 16.75 2018-04-01 True NaN 7 54.0 64.0
3 29.25 2018-04-01 True NaN 7 54.0 64.0
4 21.75 2018-04-01 True NaN 7 54.0 64.0
5 21.75 2018-04-01 True True 7 54.0 64.0
6 7.75 2018-04-01 True True 7 54.0 64.0
7 23.25 2018-04-01 True True 7 54.0 64.0
8 12.25 2018-04-01 True True 7 54.0 64.0
9 30.50 2018-04-01 True NaN 7 54.0 64.0
(скопируйте и вставьте и используйте df = pd.read_clipboard()
для создания кадра данных)
Поиск медианы изначально работает без проблем:
df.median()
b 21.75
d 1.00
e 1.00
f 7.00
g 54.00
h 64.00
dtype: float64
Однако, если столбец отброшен, а затем median
найдена, медиана для столбца e
исчезает:
new_df = df.drop(columns=['b'])
new_df.median()
d 1.0
f 7.0
g 54.0
h 64.0
dtype: float64
Это поведение немного неожиданно, и поиск медианы для столбца e сам по себе все еще работает:
new_df['e'].median()
1.0
Использование skipna=False
не имеет значения:
new_df.median(skipna=False)
d 1.0
f 7.0
g 54.0
h 64.0
dtype: float64
(это относится к исходному фрейму данных):
df.median(skipna=False)
b 21.75
d 1.00
e NaN
f 7.00
g 54.00
h 64.00
dtype: float64
Тип данных столбца e
является object
как в df
и в new_df
и единственное различие между new_df
двумя new_df
заключается в том, что new_df
не имеет столбца b
. Добавление столбца обратно в new_df
не new_df
проблему. Это происходит только тогда, когда первый столбец b
опущен. Это не происходит, если столбец e
является типом данных с плавающей запятой или целым числом.
Такое поведение присутствует как в pandas==0.22.0
и в pandas==0.24.1
Теперь есть открытая проблема GitHub для всех, чтобы попытаться решить эту проблему!