Sử dụng pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
4 với pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
5
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
# Setup
s = pd.Series[['1', '2', '3', '4', '.']]
s
0 1
1 2
2 3
3 4
4 .
dtype: object
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
Nếu bạn cần
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
6 được điền vào, hãy sử dụng pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
7.pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
Lưu ý,
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
8 sẽ cố gắng thả nổi cho các số nguyên nếu có thể. Xóa đối số nếu bạn không muốn điều đó.Từ V0.24+, Pandas giới thiệu một loại số nguyên vô hiệu, cho phép các số nguyên cùng tồn tại với Nans. Nếu bạn có số nguyên trong cột của mình, bạn có thể sử dụng
pd.__version__ # '0.24.1' pd.to_numeric[s, errors='coerce'].astype['Int32'] 0 1 1 2 2 3 3 4 4 NaN dtype: Int32
Có những lựa chọn khác để lựa chọn, hãy đọc các tài liệu để biết thêm.
Mở rộng cho pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
9
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
Nếu bạn cần mở rộng điều này cho DataFrames, bạn sẽ cần áp dụng nó cho mỗi hàng. Bạn có thể làm điều này bằng cách sử dụng
pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
0.# Setup.
np.random.seed[0]
df = pd.DataFrame[{
'A' : np.random.choice[10, 5],
'C' : np.random.choice[10, 5],
'B' : ['1', '###', '...', 50, '234'],
'D' : ['23', '1', '...', '268', '$$']}
][list['ABCD']]
df
A B C D
0 5 1 9 23
1 0 ### 3 1
2 3 ... 5 ...
3 3 50 2 268
4 7 234 4 $$
df.dtypes
A int64
B object
C int64
D object
dtype: object
df2 = df.apply[pd.to_numeric, errors='coerce']
df2
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
df2.dtypes
A int64
B float64
C int64
D float64
dtype: object
Bạn cũng có thể làm điều này với
pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
1; Mặc dù các bài kiểm tra của tôi cho thấy điều này chậm hơn một chút:df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
Nếu bạn có nhiều cột [số; không phải là số], bạn có thể thực hiện điều này hơn một chút bằng cách áp dụng
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
4 trên các cột không phải là số.df.dtypes.eq[object]
A False
B True
C False
D True
dtype: bool
cols = df.columns[df.dtypes.eq[object]]
# Actually, `cols` can be any list of columns you need to convert.
cols
# Index[['B', 'D'], dtype='object']
df[cols] = df[cols].apply[pd.to_numeric, errors='coerce']
# Alternatively,
# for c in cols:
# df[c] = pd.to_numeric[df[c], errors='coerce']
df
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
Áp dụng
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
4 dọc theo các cột [nghĩa là, pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
4, mặc định] phải nhanh hơn một chút đối với các khung dữ liệu dài. 8. Thay thế chuỗi trống trước khi chuyển đổi
Nếu bạn có các giá trị trống trong một chuỗi, hãy chuyển đổi chuỗi trống df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
2 bằng np.nan trước khi chuyển đổi nó thành float.
df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
Sự kết luận
# Below are quick example
# convert "Fee" from string to float
df['Fee'] = df['Fee'].astype[float]
print[df.dtypes]
# Convert multiple columns
df = df.astype[{'Fee':'float','Discount':'float'}]
# Convert all columns to floats
df = df.astype[float]
print[df.dtypes]
# Convert numeric function string to float
df['Discount'] = pd.to_numeric[df['Discount']]
print[df.dtypes]
# Convert DataFrame column from string to float
df["Discount"] = pd.to_numeric[df["Discount"], downcast="float"]
print[df.dtypes]
# Convert each value of the column to a string
df['Discount'] = pd.to_numeric[df['Discount'], errors='coerce']
print[df.dtypes]
# Using df.replace[] to replace nan values 0 before convertion
df['Discount'] = pd.to_numeric[df['Discount'], errors='coerce']
df = df.replace[np.nan, 0, regex=True]
print[df]
print[df.dtypes]
# Replace empty string [''] with np.nan before convertion
df['Discount']=df.Discount.replace['',np.nan].astype[float]
print[df]
print[df.dtypes]
Trong bài viết này, bạn đã học được cách chuyển đổi đơn, nhiều và tất cả các cột từ loại chuỗi sang nổi trong pandas dataFrame bằng hàm
df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
3 và pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
6.
import pandas as pd
import numpy as np
technologies= [{
'Fee' :['22000.30','25000.40','23000.20','24000.50','26000.10'],
'Discount':['1000.10',np.nan,'1000.5',np.nan,'2500.20']
}]
df = pd.DataFrame[technologies]
print[df.dtypes]
Học hỏi hạnh phúc !!
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
0Những bài viết liên quan
Cách chuyển đổi đơn hoặc tất cả các cột thành loại chuỗi trong gấu trúc32-bit signed float, use
# Setup.
np.random.seed[0]
df = pd.DataFrame[{
'A' : np.random.choice[10, 5],
'C' : np.random.choice[10, 5],
'B' : ['1', '###', '...', 50, '234'],
'D' : ['23', '1', '...', '268', '$$']}
][list['ABCD']]
df
A B C D
0 5 1 9 23
1 0 ### 3 1
2 3 ... 5 ...
3 3 50 2 268
4 7 234 4 $$
df.dtypes
A int64
B object
C int64
D object
dtype: object
5 or # Setup.
np.random.seed[0]
df = pd.DataFrame[{
'A' : np.random.choice[10, 5],
'C' : np.random.choice[10, 5],
'B' : ['1', '###', '...', 50, '234'],
'D' : ['23', '1', '...', '268', '$$']}
][list['ABCD']]
df
A B C D
0 5 1 9 23
1 0 ### 3 1
2 3 ... 5 ...
3 3 50 2 268
4 7 234 4 $$
df.dtypes
A int64
B object
C int64
D object
dtype: object
6.
Cách tìm phiên bản Pandas được cài đặt trên máy chủ
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
1Năng suất dưới đầu ra.
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
2Bạn cũng có thể sử dụng series.Asype [] để chuyển đổi một cột cụ thể. Vì mỗi cột trên DataFrame là & nbsp; Pandas Series, tôi sẽ nhận được cột từ DataFrame dưới dạng chuỗi và sử dụng & nbsp; ____ 49 & nbsp; function. Trong ví dụ dưới đây & nbsp; ________ 50 & nbsp; hoặc & nbsp; ________ 51 & nbsp; trả về đối tượng loạt.
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
3Mang lại đầu ra giống như trên.
3. Chuyển đổi nhiều cột thành Float
Bạn cũng có thể chuyển đổi nhiều cột thành Float bằng cách gửi & nbsp; Dict of Cột tên -> Kiểu dữ liệu & nbsp; to & nbsp; ____ 49 & nbsp; phương thức. Ví dụ dưới đây chuyển đổi cột & nbsp; ________ 37 & nbsp; và & nbsp; ________ 38 & nbsp; để nổi dtype.dict of column name -> data type to
# Setup.
np.random.seed[0]
df = pd.DataFrame[{
'A' : np.random.choice[10, 5],
'C' : np.random.choice[10, 5],
'B' : ['1', '###', '...', 50, '234'],
'D' : ['23', '1', '...', '268', '$$']}
][list['ABCD']]
df
A B C D
0 5 1 9 23
1 0 ### 3 1
2 3 ... 5 ...
3 3 50 2 268
4 7 234 4 $$
df.dtypes
A int64
B object
C int64
D object
dtype: object
9 method. The below example converts column pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
7 and pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
8 to float dtype.pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
44. Chuyển đổi tất cả các cột thành loại float
Theo mặc định, hàm ASTYPE [] chuyển đổi tất cả các cột thành cùng loại. Ví dụ dưới đây chuyển đổi tất cả các cột DataFrame thành loại float. Nếu bạn có bất kỳ cột nào có giá trị Alpha-Numeric, bạn sẽ gặp lỗi.
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
5Năng suất dưới đầu ra.
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
65. Sử dụng pandas.to_numeric []
Ngoài ra, bạn có thể chuyển đổi tất cả các cột chuỗi thành loại float bằng
pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
6. Ví dụ: sử dụng hàm df2 = df.apply[pd.to_numeric, errors='coerce']
df2
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
df2.dtypes
A int64
B float64
C int64
D float64
dtype: object
6 để chuyển đổi df2 = df.apply[pd.to_numeric, errors='coerce']
df2
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
df2.dtypes
A int64
B float64
C int64
D float64
dtype: object
7Column thành float.pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
7Năng suất dưới đầu ra.
pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
86. Xử lý các giá trị không phải là số
Khi bạn có một số ô có giá trị ký tự trên một cột, bạn muốn chuyển đổi thành Float, nó sẽ trả về một lỗi.Để bỏ qua lỗi và chuyển đổi các giá trị char thành
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
6 sử dụng thuộc tính pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
5.pd.to_numeric[s, errors='coerce']
0 1.0
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
9Điều này mang lại đầu ra giống như trên.
7. Thay thế các giá trị ‘NAN NAN bằng số không
Sử dụng hàm
df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
0 để thay thế các giá trị df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
1 bằng các giá trị ‘0.pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
0Năng suất dưới đầu ra.
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
18. Thay thế chuỗi trống trước khi chuyển đổi
Nếu bạn có các giá trị trống trong một chuỗi, hãy chuyển đổi chuỗi trống
df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
2 bằng np.nan trước khi chuyển đổi nó thành float.pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
2Năng suất dưới đầu ra.
pd.to_numeric[s, errors='coerce'].fillna[0, downcast='infer']
0 1
1 2
2 3
3 4
4 0
dtype: float64
3Sự kết luận
Trong bài viết này, bạn đã học được cách chuyển đổi đơn, nhiều và tất cả các cột từ loại chuỗi sang nổi trong pandas dataFrame bằng hàm
df.transform[pd.to_numeric, errors='coerce']
A B C D
0 5 1.0 9 23.0
1 0 NaN 3 1.0
2 3 NaN 5 NaN
3 3 50.0 2 268.0
4 7 234.0 4 NaN
3 và pd.__version__
# '0.24.1'
pd.to_numeric[s, errors='coerce'].astype['Int32']
0 1
1 2
2 3
3 4
4 NaN
dtype: Int32
6.Học hỏi hạnh phúc !!
Những bài viết liên quan
- Cách chuyển đổi đơn hoặc tất cả các cột thành loại chuỗi trong gấu trúc
- Cách tìm phiên bản Pandas được cài đặt trên máy chủ
Người giới thiệu
- //pandas.pydata.org/docs/reference/api/pandas.DataFrame.convert_dtypes.html?