Как уже упоминалось, отображение: inline - это, вероятно, то, что вы хотите. Некоторые браузеры также поддерживают встроенные блоки.
Начиная с v0.17,
blockquote>convert_objects
устарел.Чтобы преобразовать серию в числовое значение, используйте
pd.to_numeric
с помощью кнопкиerrors='coerce'
-s = pd.Series(['1','2','3','4','.']) pd.to_numeric(s, errors='coerce') 0 1.0 1 2.0 2 3.0 3 4.0 4 NaN dtype: float64
Если вам нужно заполнить
NaN
s, используйтеpd.Series.fillna
-pd.to_numeric(s, errors='coerce').fillna(0, downcast='infer') 0 1 1 2 2 3 3 4 4 0 dtype: float64
Примечание.
downcast='infer'
попытается сбрасывать поплавки к целым числам, где это возможно. Удалите аргумент, если вы этого не хотите.
pd.DataFrame
В случае, если кто-то заинтересован в том, как продлить это на dataframes, вот как -
df = pd.DataFrame({'A' : np.random.choice(10, 10), 'B' : ['1', '2', '3', '4', '###', '...', 50, '234', '34', '23'], 'C' : np.random.choice(10, 10), 'D' : ['23', '1', '...', '268', '34', '21', '$$', '34', '4567', '0']}) df A B C D 0 2 1 2 23 1 9 2 0 1 2 2 3 4 ... 3 9 4 9 268 4 0 ### 3 34 5 8 ... 6 21 6 5 50 2 $$ 7 3 234 4 34 8 4 34 9 4567 9 8 23 0 0 df.dtypes A int64 B object C int64 D object dtype: object
Если вы не знаете, какие столбцы не являются числовыми, запросите
dtypes
и получите маску -df.dtypes.eq(object) A False B True C False D True dtype: bool cols = df.columns[df.dtypes.eq(object)] cols Index(['B', 'D'], dtype='object')
Теперь используйте маску для фильтрации по столбцам и
apply
pd.to_numeric
-df[cols] = df[cols].apply(pd.to_numeric, errors='coerce', axis=0)
Или,
for c in cols: df[c] = pd.to_numeric(df[c], errors='coerce')
df A B C D 0 2 1.0 2 23.0 1 9 2.0 0 1.0 2 2 3.0 4 NaN 3 9 4.0 9 268.0 4 0 NaN 3 34.0 5 8 NaN 6 21.0 6 5 50.0 2 NaN 7 3 234.0 4 34.0 8 4 34.0 9 4567.0 9 8 23.0 0 0.0
Применение
pd.to_numeric
вдоль столбцов должно быть немного быстрее в течение длительного времени dataframes. Для широких фреймов данных используйтеaxis=1
.
In [30]: pd.Series([1,2,3,4,'.']).convert_objects(convert_numeric=True)
Out[30]:
0 1
1 2
2 3
3 4
4 NaN
dtype: float64
raise_on_error
. Ничего не делает ATM.
– Jeff
20 September 2014 в 21:09
astype
возникла бы ошибка.
– Korem
20 September 2014 в 21:12
.convert_objects()
метод устарел с 0,17, pd.to_numeric
- это новый способ.
– YaOzI
3 November 2016 в 09:05
s.str.isalnum()
:-) в сочетании сmask
– Wen 23 December 2017 в 17:31s.str.isdigit()
? Он будет работать только для целых чисел, а не для плавающих. Хорошая идея. – coldspeed 23 December 2017 в 17:32to_numeric
здесь золото. – Dark 23 December 2017 в 17:33