Рассмотрим следующий фрейм данных:
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
, в котором нет столбца b
.Добавление столбца обратно в new_df
не решает проблему.Это происходит только тогда, когда первый столбец b
удален.Это не происходит, если столбец e
является типом данных с плавающей точкой или целочисленным типом.
Это поведение присутствует как в pandas==0.22.0
, так и в pandas==0.24.1
. Теперь существует открытый 10 * * GitHubпроблема для всех, кто попытается решить эту проблему!