2017-03-08 23 views
6

Tôi đã làm theo quy trình sau: In Python, how do I convert all of the items in a list to floats? vì mỗi cột trong khung nội tuyến của tôi là list, nhưng thay vì floats tôi đã chọn thay đổi tất cả các giá trị thành strings.Python - Chuyển tất cả các mục trong một Dataframe thành chuỗi

df = [str(i) for i in df]

Nhưng điều này không thành công.

Nó chỉ xóa tất cả dữ liệu ngoại trừ hàng đầu tiên của tên cột. Sau đó, hãy thử df = [str(i) for i in df.values] 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 hỏng 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 khung dữ liệu sang bảng Oracle của tôi.

Có cách nào để chuyển đổi tất cả các mục trong Dataframe của tôi KHÔNG phải là chuỗi thành chuỗi không?

Trả lời

7

Bạn có thể sử dụng applymap phương pháp:

df = df.applymap(str) 
+0

Điều đó làm việc hoàn toàn hoàn hảo và cố định toàn bộ mã của tôi. Cảm ơn một tấn – theprowler

+0

Bạn được chào đón. Rất vui được! – Psidom

+0

Tôi không biết dataframe lớn như thế nào, nhưng có vẻ như astype nhanh hơn rất nhiều. Xem câu trả lời của tôi :). – Skirrebattie

6

Bạn có thể sử dụng này:

df = df.astype(str) 

vì tò mò, tôi quyết định để xem nếu có bất kỳ sự khác biệt trong hiệu quả giữa các giải pháp chấp nhận và mỏ.

Kết quả là dưới đây:

dụ df: df = pd.DataFrame ([danh sách (phạm vi (1000))], index = [0])

kiểm tra df.astype:

%timeit df.astype(str) 
>> 100 loops, best of 3: 2.18 ms per loop 

kiểm tra df.applymap:

%timeit df.applymap(str) 
1 loops, best of 3: 245 ms per loop 

dường 01.233.là khá nhanh hơn rất nhiều :)

Các vấn đề liên quan