Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

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

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

>>> 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'
5 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ử

>>> 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'
6

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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

Mooncrater

3.6124 Huy hiệu vàng27 Huy hiệu bạc54 Huy hiệu đồng4 gold badges27 silver badges54 bronze badges

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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

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

>>> 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' 7

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

>>> 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'
7:

df.convert_dtypes()                                                        

      a      b
0     1   True
1     2  False
2     

df.convert_dtypes().dtypes                                                 

a      Int64
b    boolean
dtype: object

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

>>> 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'
9 làm bước đầu tiên:

s = pd.Series(['1', '2', '...'])
s.convert_dtypes()  # converts to string, which is not what we want

0      1
1      2
2    ...
dtype: string 

# coerces non-numeric junk to NaNs
pd.to_numeric(s, errors='coerce')

0    1.0
1    2.0
2    NaN
dtype: float64

# one final `convert_dtypes` call to convert to nullable int
pd.to_numeric(s, errors='coerce').convert_dtypes() 

0       1
1       2
2    
dtype: Int64

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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

cs95cs95cs95

349K87 Huy hiệu vàng642 Huy hiệu bạc690 Huy hiệu Đồng87 gold badges642 silver badges690 bronze badges

df['col_name'] = pd.to_numeric(df['col_name'])

Đâ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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

Nii Joshuanii JoshuaNii Joshua

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

1

Nó đơn giản

pd.factorize(df.purchase)[0]

Example:

>>> 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] 
0
>>> 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] 
1
>>> 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] 
2

Đã 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

>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
0 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ý:

>>> 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] 
3

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

Ihor Patsian

1.2802 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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

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

>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
1 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ụ::

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

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

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

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

>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
1 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. :)

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

Đã 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

>>> 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'
7 sẽ chuyển đổi nó thành loại chuỗi trừ khi bạn sử dụng
>>> 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'
9 theo đề xuất của @CS95 (có khả năng kết hợp với
>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
5).

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):

>>> 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] 
6

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

>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
6 để 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:

>>> 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] 
7

hoặc

>>> 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] 
8

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

Talha Tayyab

2.38015 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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

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

>>> 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] 
9

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:

>>> 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'
0

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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

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:

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

Đã 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ố

>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
7 hoặc
>>> df['id'].apply(str)
 1 abc1
 2 abc2
 3 abc3
 4 abc4
 Name: id, dtype: object
8.

Mã là:-

>>> 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'
2

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

Thepyguy

Phim thương hiệu vàng 17K55 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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

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

Hướng dẫn how do you convert an int to an object in python? - làm thế nào để bạn chuyển đổi một int thành một đối tượng trong python?

2

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

>>> 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'
3

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 thế nào để bạn chuyển đổi thành một đối tượng trong Python?

Sử dụng hàm json.loads (). JSON. Hàm tải () chấp nhận làm đầu vào một chuỗi hợp lệ và chuyển đổi nó thành từ điển Python. Quá trình này được gọi là Deserialization - hành động chuyển đổi một chuỗi thành một đối tượng. loads() function. The json. loads() function accepts as input a valid string and converts it to a Python dictionary. This process is called deserialization – the act of converting a string to an object.

Có phải là một đối tượng trong Python?

Các đối tượng hoạt động khác nhau theo nhau theo những gì mà loại đối tượng đã cho là.Chúng tôi đã xem xét một số loại đối tượng cơ bản trong Python: int, float, phức tạp: các loại số.Bool: Loại Boolean.int , float , complex : the numerical types. bool : the boolean type.

Chúng ta có thể chuyển đổi đối tượng thành int trong python không?

Nếu đối tượng của bạn là một chuỗi, thì bạn có thể sử dụng phương thức Integer.valueOf () để chuyển đổi nó thành một int đơn giản: int i = integer.Giá trị ((chuỗi) đối tượng);use the Integer. valueOf() method to convert it into a simple int : int i = Integer. valueOf((String) object);

Làm thế nào để bạn thay đổi INT trong Python?

Để chuyển đổi hoặc đúc, một chuỗi thành một số nguyên trong Python, bạn sử dụng hàm tích hợp int ().Hàm nhận được như một tham số, chuỗi ban đầu bạn muốn chuyển đổi và trả về số nguyên tương đương với giá trị bạn đã vượt qua.Cú pháp chung trông giống như thế này: int ("str").use the int() built-in function. The function takes in as a parameter the initial string you want to convert, and returns the integer equivalent of the value you passed. The general syntax looks something like this: int("str") .