Hướng dẫn how do you convert a series to a float in python? - làm thế nào để bạn chuyển đổi một chuỗi thành một float trong python?

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

# 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

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.

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
0

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ú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
1

Nă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
2

Bạ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
3

Mang 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
4

4. 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
5

Nă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
6

5. 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
7

Nă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
8

6. 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
0

Nă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
1

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.

pd.to_numeric(s, errors='coerce').fillna(0, downcast='infer')

0    1
1    2
2    3
3    4
4    0
dtype: float64
2

Nă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
3

Sự 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

  • https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.convert_dtypes.html?