Hướng dẫn can we convert object to int in python? - chúng ta có thể chuyển đổi đối tượng thành int trong python không?

Bạn có thể sử dụng cú pháp sau để chuyển đổi cột trong khung dữ liệu gấu trúc từ một đối tượng sang số nguyên:

df['object_column'] = df['int_column'].astype[str].astype[int]

Các ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế với DataFrame Pandas sau:

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object

Ví dụ 1: Chuyển đổi một cột từ đối tượng sang số nguyên

Mã sau đây cho thấy cách chuyển đổi cột điểm từ một đối tượng sang số nguyên:points column from an object to an integer:

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object

Chúng ta có thể thấy rằng cột điểm bây giờ là một số nguyên, trong khi tất cả các cột khác vẫn không thay đổi.points column is now an integer, while all other columns remained unchanged.

Ví dụ 2: Chuyển đổi nhiều cột thành Số nguyên

Mã sau đây cho thấy cách chuyển đổi nhiều cột trong DataFrame từ một đối tượng sang số nguyên:

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object

Chúng ta có thể thấy rằng các cột và hỗ trợ các cột đã được chuyển đổi từ các đối tượng sang số nguyên.points and assists columns have both been converted from objects to integers.

Tài nguyên bổ sung

Các hướng dẫn sau đây giải thích cách thực hiện các chuyển đổi phổ biến khác trong gấu trúc:

Cách chuyển đổi các cột DataFrame của Pandas thành chuỗi Cách chuyển đổi dấu thời gian thành DateTime trong Pandas Cách chuyển đổi DateTime cho đến nay trong Pandas
How to Convert Timestamp to Datetime in Pandas
How to Convert Datetime to Date in Pandas

96

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đã đọc một truy vấn SQL vào gấu trúc và các giá trị đang xuất hiện dưới dạng 'đối tượng', mặc dù chúng là chuỗi, ngày và số nguyên. Tôi có thể chuyển đổi ngày 'đối tượng' thành DTYPE DateTime Pandas, nhưng tôi đang gặp lỗi khi cố gắng chuyển đổi chuỗi và số nguyên.

Đây là một ví dụ:

>>> import pandas as pd
>>> df = pd.read_sql_query['select * from my_table', conn]
>>> df
    id    date          purchase
 1  abc1  2016-05-22    1
 2  abc2  2016-05-29    0
 3  abc3  2016-05-22    2
 4  abc4  2016-05-22    0

>>> df.dtypes
 id          object
 date        object
 purchase    object
 dtype: object

Chuyển đổi

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
8 thành DateTime hoạt động:

>>> pd.to_datetime[df['date']]
 1  2016-05-22
 2  2016-05-29
 3  2016-05-22
 4  2016-05-22
 Name: date, dtype: datetime64[ns] 

Nhưng tôi gặp lỗi khi cố gắng chuyển đổi

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
9 thành số nguyên:

>>> df['purchase'].astype[int]
 ....
 pandas/lib.pyx in pandas.lib.astype_intsafe [pandas/lib.c:16667][]
 pandas/src/util.pxd in util.set_value_at [pandas/lib.c:67540][]

 TypeError: long[] argument must be a string or a number, not 'java.lang.Long'

Lưu ý: Tôi gặp lỗi tương tự khi tôi thử

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
0

Và khi cố gắng chuyển đổi thành một chuỗi, dường như không có gì xảy ra.

>>> df['id'].apply[str]
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object

Mooncrater

3.6044 Huy hiệu vàng27 Huy hiệu bạc53 Huy hiệu Đồng4 gold badges27 silver badges53 bronze badges

Khi được hỏi ngày 26 tháng 8 năm 2016 lúc 19:54Aug 26, 2016 at 19:54

2

Ghi lại câu trả lời làm việc cho tôi dựa trên nhận xét của @pirsquared.

Tôi cần chuyển đổi thành một chuỗi trước, sau đó là một số nguyên.

>>> df['purchase'].astype[str].astype[int]

Đã trả lời ngày 29 tháng 8 năm 2016 lúc 22:14Aug 29, 2016 at 22:14

Cyrilcyrilcyril

2.7564 huy hiệu vàng18 Huy hiệu bạc25 Huy hiệu đồng4 gold badges18 silver badges25 bronze badges

0

gấu trúc> = 1.0

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
1

Câu trả lời được chấp nhận [bản thân] không xem xét khả năng NAN trong các cột đối tượng.

df = pd.DataFrame[{
     'a': [1, 2, np.nan], 
     'b': [True, False, np.nan]}, dtype=object] 
df                                                                         

     a      b
0    1   True
1    2  False
2  NaN    NaN

df['a'].astype[str].astype[int] # raises ValueError

Điều này nghẹt thở vì NAN được chuyển đổi thành một chuỗi "NAN", và những nỗ lực tiếp theo để ép buộc đến số nguyên sẽ thất bại. Để tránh vấn đề này, chúng ta có thể các cột chuyển đổi mềm sang loại có thể tưởng tượng tương ứng của chúng bằng cách sử dụng

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
1:

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
0

Nếu dữ liệu của bạn có văn bản rác được trộn lẫn với INT của bạn, bạn có thể sử dụng

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
3 làm bước đầu tiên:

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
1

Đã trả lời ngày 13 tháng 2 năm 2020 lúc 8:55Feb 13, 2020 at 8:55

cs95cs95cs95

348K87 Huy hiệu vàng641 Huy hiệu bạc689 Huy hiệu Đồng87 gold badges641 silver badges689 bronze badges

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
2

Đây là một lựa chọn tốt hơn

Đã trả lời ngày 24 tháng 3 năm 2021 lúc 10:46Mar 24, 2021 at 10:46

Nii Joshuanii JoshuaNii Joshua

1812 Huy hiệu bạc5 Huy hiệu Đồng2 silver badges5 bronze badges

1

Nó đơn giản

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
3

Example:

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
4
import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
5
import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
6

Đã trả lời ngày 10 tháng 8 năm 2017 lúc 4:55Aug 10, 2017 at 4:55

KarirukariruKariru

Huy hiệu đồng 1131 Bạc3 Huy hiệu đồng1 silver badge3 bronze badges

3

Dữ liệu tàu của tôi chứa ba tính năng là đối tượng sau khi áp dụng

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
4 Nó chuyển đổi đối tượng thành số nhưng trước đó, bạn cần thực hiện một số bước tiền xử lý:

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
7

Ihor Patsian

1.2702 Huy hiệu vàng15 Huy hiệu bạc25 Huy hiệu đồng2 gold badges15 silver badges25 bronze badges

Đã trả lời ngày 4 tháng 9 năm 2019 lúc 5:24Sep 4, 2019 at 5:24

Thực hiện theo các bước sau:

1. Tệp tệp của bạn -> Mở DataFile của bạn ở định dạng

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
5 và thấy rằng có "?" thay cho những nơi trống và xóa tất cả chúng.

2.Drop các hàng chứa các giá trị bị thiếu, ví dụ::

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
8

3. Sử dụng astype ngay bây giờ để chuyển đổi

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'player': ['A', 'B', 'C', 'D', 'E'],
                   'points': ['25', '27', '14', '17', '20'],
                   'assists': ['5', '7', '10', '8', '9']}]

#view data types for each column
df.dtypes

player     object
points     object
assists    object
dtype: object
9

Lưu ý: Nếu vẫn tìm thấy lỗi trong chương trình của bạn thì một lần nữa kiểm tra tệp

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
5 của bạn, hãy mở nó trong Excel để tìm xem có "?" Trong cột yêu cầu của bạn, sau đó xóa nó và lưu tệp và quay lại và chạy chương trình của bạn.

Nhận xét thành công! Nếu nó hoạt động. :]

Đã trả lời ngày 7 tháng 4 năm 2018 lúc 9:51Apr 7, 2018 at 9:51

1

Không thể nhận xét để đăng bài này như một câu trả lời, phần nào nằm giữa @pirsquared/ @cyril's giải pháp và @CS95's:

Theo ghi nhận của @CS95, nếu dữ liệu của bạn chứa NANS hoặc NONES, việc chuyển đổi thành loại chuỗi sẽ gây ra lỗi khi cố gắng chuyển đổi sang int sau đó.

Tuy nhiên, nếu dữ liệu của bạn bao gồm các chuỗi [số], sử dụng

#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
1 sẽ chuyển đổi nó thành loại chuỗi trừ khi bạn sử dụng
#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
3 theo đề xuất của @CS95 [có khả năng kết hợp với
#convert 'points' and 'assists' columns to integer
df[['points', 'assists']] = df[['points', 'assists']].astype[str].astype[int]

#view data types for each column
df.dtypes

player     object
points      int32
assists     int32
dtype: object
9].

Trong trường hợp dữ liệu của bạn chỉ bao gồm các chuỗi số [bao gồm cả Nans hoặc Nones nhưng không có bất kỳ "rác" nào không phải là số lượng bởi gấu trúc [đã có trong phiên bản 0.24] [xem thêm câu trả lời này]:

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
0

Lưu ý rằng đã có những cuộc thảo luận gần đây về điều này trên GitHub [hiện đang là vấn đề đã đóng lại] và trong trường hợp số nguyên 64 bit rất dài, bạn có thể phải chuyển đổi rõ ràng sang

>>> import pandas as pd
>>> df = pd.read_sql_query['select * from my_table', conn]
>>> df
    id    date          purchase
 1  abc1  2016-05-22    1
 2  abc2  2016-05-29    0
 3  abc3  2016-05-22    2
 4  abc4  2016-05-22    0

>>> df.dtypes
 id          object
 date        object
 purchase    object
 dtype: object
0 để tránh xấp xỉ trong quá trình chuyển đổi.

Đã trả lời ngày 27 tháng 2 năm 2020 lúc 15:27Feb 27, 2020 at 15:27

Onietosionietosionietosi

2432 Huy hiệu bạc7 Huy hiệu đồng2 silver badges7 bronze badges

Để thay đổi kiểu dữ liệu và lưu nó vào khung dữ liệu, cần phải thay thế kiểu dữ liệu mới như sau:

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
1

hoặc

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
2

Talha Tayyab

2.36215 Huy hiệu vàng16 Huy hiệu bạc28 Huy hiệu đồng15 gold badges16 silver badges28 bronze badges

Đã trả lời ngày 2 tháng 5 năm 2021 lúc 13:05May 2, 2021 at 13:05

Trong trường hợp của tôi, tôi đã có một DF với dữ liệu hỗn hợp:

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
3

Các phao thực sự là đối tượng, nhưng tôi cần chúng là những chiếc phao thực sự.

Để sửa nó, hãy tham khảo nhận xét của @AMC ở trên:

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
4

Đã trả lời ngày 23 tháng 4 năm 2020 lúc 16:04Apr 23, 2020 at 16:04

sqqqrlysqqqrlysqqqrly

8471 Huy hiệu vàng7 Huy hiệu bạc1 gold badge7 silver badges10 bronze badges

Nếu các phương thức này thất bại, bạn có thể thử một danh sách hiểu như thế này:

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
5

Đã trả lời ngày 23 tháng 5 năm 2021 lúc 13:38May 23, 2021 at 13:38

ZakszaksZakS

9932 Huy hiệu vàng13 Huy hiệu bạc26 Huy hiệu đồng2 gold badges13 silver badges26 bronze badges

Chuyển đổi đối tượng sang số

>>> import pandas as pd
>>> df = pd.read_sql_query['select * from my_table', conn]
>>> df
    id    date          purchase
 1  abc1  2016-05-22    1
 2  abc2  2016-05-29    0
 3  abc3  2016-05-22    2
 4  abc4  2016-05-22    0

>>> df.dtypes
 id          object
 date        object
 purchase    object
 dtype: object
1 hoặc
>>> import pandas as pd
>>> df = pd.read_sql_query['select * from my_table', conn]
>>> df
    id    date          purchase
 1  abc1  2016-05-22    1
 2  abc2  2016-05-29    0
 3  abc3  2016-05-22    2
 4  abc4  2016-05-22    0

>>> df.dtypes
 id          object
 date        object
 purchase    object
 dtype: object
2.

Mã là:-

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
6

Thepyguy

16.9k5 Huy hiệu vàng16 Huy hiệu bạc42 Huy hiệu đồng5 gold badges16 silver badges42 bronze badges

Đã trả lời ngày 3 tháng 8 năm 2021 lúc 10:39Aug 3, 2021 at 10:39

0

Sử dụng dây dẫn ASTYPE để chuyển đổi kiểu dữ liệu của cột đó

Đã trả lời ngày 8 tháng 8 lúc 16:46Aug 8 at 16:46

2

Đây là dữ liệu của tôi

#convert 'points' column to integer
df['points'] = df['points'].astype[str].astype[int]

#view data types of each column
df.dtypes

player     object
points      int32
assists    object
dtype: object
7

Tôi khuyên bạn chỉ nên sử dụng điều này với dữ liệu nhỏ. Mã này có độ phức tạp của O [n^2].

Xyand

4.4304 Huy hiệu vàng36 Huy hiệu bạc62 Huy hiệu Đồng4 gold badges36 silver badges62 bronze badges

Đã trả lời ngày 29 tháng 3 năm 2020 lúc 13:54Mar 29, 2020 at 13:54

3

Làm cách nào để chuyển đổi một đối tượng thành một số trong Python?

Cách tốt nhất để chuyển đổi một hoặc nhiều cột của DataFrame thành các giá trị số là sử dụng pandas.to_numeric []. Chức năng này sẽ cố gắng thay đổi các đối tượng không phải là số [như chuỗi] thành số nguyên hoặc số điểm nổi nếu thích hợp.pandas. to_numeric[]. This function will try to change non-numeric objects [such as strings] into integers or floating-point numbers as appropriate.

Làm thế nào để bạn chuyển đổi một đối tượng thành int hoặc float trong python?

Giá trị phao có thể được chuyển đổi thành giá trị INT không lớn hơn đầu vào bằng cách sử dụng hàm math.floor [], trong khi nó cũng có thể được chuyển đổi thành giá trị INT có số nguyên nhỏ nhất lớn hơn đầu vào sử dụng toán học.Hàm trần [].by using the math. floor[] function, whereas it can also be converted to an int value which is the smallest integer greater than the input using math. ceil[] function.

Làm thế nào để bạn chuyển đổi một bộ dữ liệu thành int trong python?

Sử dụng chức năng pandas dataFrame.Asype [] để chuyển đổi cột thành int [số nguyên], bạn có thể áp dụng điều này trên một cột cụ thể hoặc trên toàn bộ DataFrame.Để chuyển loại dữ liệu lên số nguyên đã ký 64 bit, bạn có thể sử dụng Numpy.Int64, Numpy. astype[] function to convert column to int [integer], you can apply this on a specific column or on an entire DataFrame. To cast the data type to 64-bit signed integer, you can use numpy. int64 , numpy.

Làm cách nào để thay đổi loại dữ liệu trong Python?

Phương thức ASTYPE [].Chúng ta có thể chuyển bất kỳ kiểu dữ liệu Python, Numpy hoặc Pandas nào để thay đổi tất cả các cột của DataFrame sang loại đó hoặc chúng ta có thể chuyển từ điển có tên cột làm khóa và kiểu dữ liệu thành giá trị để thay đổi loại cột đã chọn.. We can pass any Python, Numpy or Pandas datatype to change all columns of a dataframe to that type, or we can pass a dictionary having column names as keys and datatype as values to change type of selected columns.

Bài Viết Liên Quan

Chủ Đề