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
0Và 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: object0
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: object1
Đã 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: object2
Đâ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: object3
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: object4
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: object5
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: object6
Đã 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: object7
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: object8
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: object9
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
0Lư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
1hoặ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
3Cá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
7Tô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