Tôi đã làm theo quy trình sau: Trong Python, làm cách nào để chuyển đổi tất cả các mục trong danh sách thành phao? Bởi vì mỗi cột trong khung dữ liệu của tôi là list
, nhưng thay vì
df = pd.DataFrame[[list[range[1000]]], index=[0]]
0, tôi đã chọn thay đổi tất cả các giá trị thành df = pd.DataFrame[[list[range[1000]]], index=[0]]
1.df = pd.DataFrame[[list[range[1000]]], index=[0]]
2Nhưng điều này đã thất bại.
Nó chỉ đơn giản là xóa tất cả các dữ liệu ngoại trừ hàng đầu tiên của tên cột.
Sau đó, cố gắng
df = pd.DataFrame[[list[range[1000]]], index=[0]]
3 dẫn đến việc thay đổi toàn bộ khung dữ liệu thành một danh sách lớn, nhưng điều đó làm rối dữ liệu quá nhiều để có thể đáp ứng mục tiêu của tập lệnh của tôi là xuất bản dữ liệu vào bảng Oracle của tôi.Có cách nào để chuyển đổi tất cả các mục trong khung dữ liệu của tôi không phải là chuỗi thành chuỗi không?
Đã hỏi ngày 8 tháng 3 năm 2017 lúc 16:40Mar 8, 2017 at 16:40
TheProwlerTheProwlertheprowler
2.70810 Huy hiệu vàng25 Huy hiệu bạc37 Huy hiệu đồng10 gold badges25 silver badges37 bronze badges
Bạn có thể sử dụng điều này:
df = df.astype[str]
Vì tò mò, tôi quyết định xem liệu có bất kỳ sự khác biệt nào về hiệu quả giữa giải pháp được chấp nhận và của tôi không.
Kết quả dưới đây:
Ví dụ DF:
df = pd.DataFrame[[list[range[1000]]], index=[0]]
Kiểm tra
df = pd.DataFrame[[list[range[1000]]], index=[0]]
4:%timeit df.astype[str]
>> 100 loops, best of 3: 2.18 ms per loop
Kiểm tra
df = pd.DataFrame[[list[range[1000]]], index=[0]]
5:%timeit df.applymap[str]
1 loops, best of 3: 245 ms per loop
Có vẻ như
df = pd.DataFrame[[list[range[1000]]], index=[0]]
4 khá nhanh hơn rất nhiều :]
Cleb
23.8K18 Huy hiệu vàng108 Huy hiệu bạc145 Huy hiệu đồng18 gold badges108 silver badges145 bronze badges
Đã trả lời ngày 8 tháng 3 năm 2017 lúc 16:45Mar 8, 2017 at 16:45
6
Bạn có thể sử dụng phương thức
df = pd.DataFrame[[list[range[1000]]], index=[0]]
7:df = df.applymap[str]
Đã trả lời ngày 8 tháng 3 năm 2017 lúc 16:44Mar 8, 2017 at 16:44
PsidompsidomPsidom
202K27 Huy hiệu vàng315 Huy hiệu bạc338 Huy hiệu đồng27 gold badges315 silver badges338 bronze badges
4
Với Pandas> = 1.0 hiện có một chuỗi dữ liệu chuyên dụng:
Bạn có thể chuyển đổi cột của mình thành kiểu dữ liệu chuỗi pandas này bằng cách sử dụng .Asype ['chuỗi']:string datatype using .astype['string']:
df = df.astype['string']
Điều này khác với việc sử dụng
df = pd.DataFrame[[list[range[1000]]], index=[0]]
8, đặt kiểu dữ liệu 'đối tượng' của Pandas:df = df.astype[str]
Bạn có thể thấy sự khác biệt trong các kiểu dữ liệu khi bạn xem thông tin của DataFrame:
df = pd.DataFrame[{
'zipcode_str': [90210, 90211] ,
'zipcode_string': [90210, 90211],
}]
df['zipcode_str'] = df['zipcode_str'].astype[str]
df['zipcode_string'] = df['zipcode_str'].astype['string']
df.info[]
# you can see that the first column has dtype object
# while the second column has the new dtype string
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 zipcode_str 2 non-null object
1 zipcode_string 2 non-null string
dtypes: object[1], string[1]
Từ các tài liệu:
Loại tiện ích mở rộng 'chuỗi' giải quyết một số vấn đề với các mảng numpy đối tượng:
1] Bạn có thể vô tình lưu trữ hỗn hợp các chuỗi và không dây trong một mảng DTYPE đối tượng. Một StringArray chỉ có thể lưu trữ chuỗi.
2] Đối tượng DTYPE BREAKS Các hoạt động dành riêng cho DTYPE như dataFrame.select_dtypes []. Có một cách rõ ràng để chọn chỉ văn bản trong khi loại trừ các cột không phải là văn bản, nhưng vẫn là các cột đối tượng.
3] Khi đọc mã, nội dung của một mảng DTYPE đối tượng không rõ ràng hơn chuỗi.
Thông tin về Pandas 1.0 có thể được tìm thấy ở đây: //pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html
//pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html
Đã trả lời ngày 23 tháng 1 năm 2020 lúc 14:58Jan 23, 2020 at 14:58
1
Điều này làm việc cho tôi:
dt.applymap[lambda x: x[0] if type[x] is list else None]
Đã trả lời ngày 1 tháng 12 năm 2018 lúc 16:18Dec 1, 2018 at 16:18