2015-04-27 41 views
29

Tôi đang vật lộn với điều dường như rất đơn giản. Tôi có khung dữ liệu gấu trúc chứa chuỗi rất dài.In chuỗi hoàn chỉnh của khung dữ liệu gấu trúc

df = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']}) 

Bây giờ khi tôi cố gắng in giống nhau, tôi không thấy chuỗi đầy đủ Tôi chỉ thấy một phần của chuỗi.

tôi đã cố gắng lựa chọn

  • sử dụng in sau (df.iloc [2])
  • sử dụng to_html
  • sử dụng to_string
  • Một trong những câu trả lời stackoverflow gợi ý để tăng chiều rộng cột bằng cách sử dụng tùy chọn hiển thị gấu trúc, cũng không hoạt động.
  • Tôi cũng không hiểu cách set_printoptions sẽ giúp tôi.

Bất kỳ ý tưởng nào được đánh giá cao. Trông rất đơn giản, nhưng không thể có được nó!

+0

bạn nên chấp nhận câu trả lời. –

Trả lời

46

Bạn có thể sử dụng options.display.max_colwidth để xác định bạn muốn xem ở những đại diện mặc định:

In [2]: df 
Out[2]: 
               one 
0            one 
1            two 
2 This is very long string very long string very... 

In [3]: pd.options.display.max_colwidth 
Out[3]: 50 

In [4]: pd.options.display.max_colwidth = 100 

In [5]: df 
Out[5]: 
                       one 
0                    one 
1                    two 
2 This is very long string very long string very long string veryvery long string 

Và quả thực, nếu bạn chỉ muốn kiểm tra một giá trị, bằng cách truy cập nó (như là một đại lượng vô hướng , không phải là một hàng như df.iloc[2] không), bạn cũng có thể xem toàn bộ chuỗi:

In [7]: df.iloc[2,0] # or df.loc[2,'one'] 
Out[7]: 'This is very long string very long string very long string veryvery long string' 
+0

df.iloc [2.0] - không hoạt động - Tôi sẽ in hàng đầu tiên và thứ ba và cutted ( – Rocketq

+0

Nó hoạt động, nếu bạn muốn yếu tố của hàng thứ ba và cột đầu tiên. Nếu bạn muốn cái gì khác, xin vui lòng mở một mới – joris

+0

Nó hoạt động, thx! Tôi có một danh sách các mã zip trong 1 cột và sử dụng áp dụng để tìm cột tối thiểu và tối đa bằng cách sử dụng một hàm: df ['zipcodeMinMax'] = df.loc [:, ['zipcodeList' ], áp dụng (createMinMaxZipcode, axis = 1) Vì vậy, trong hàm tôi làm to_string trên chuỗi (stringZipcodes = zipcodeList.to_string (header = False, index = False)). Danh sách mã zip dài hơn dẫn đến 3 dấu chấm tại kết thúc, ví dụ: "1111 ...".Thật vậy điều này không xảy ra nếu bạn chọn các giá trị dựa trên chỉ mục và cột (dưới dạng vô hướng). Câu hỏi của tôi: tại sao hành vi này? Đặt tùy chọn hiển thị ảnh hưởng đến việc áp dụng có vẻ lạ đối với tôi? Cám ơn! – Wouter

4

Đây có phải là những gì bạn muốn làm không?

In [7]: x = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']}) 

In [8]: x 
Out[8]: 
               one 
0            one 
1            two 
2 This is very long string very long string very... 

In [9]: x['one'][2] 
Out[9]: 'This is very long string very long string very long string veryvery long string' 
0

Con đường tôi thường đối phó với những tình huống mà bạn mô tả là sử dụng .to_csv() phương pháp và ghi vào stdout:

import sys 

df.to_csv(sys.stdout) 

Điều này sẽ đổ toàn bộ khung dữ liệu, bao gồm toàn bộ bất kỳ chuỗi nào. Bạn có thể sử dụng các tham số to_csv để cấu hình các dấu phân cách cột, cho dù chỉ mục được in, vv. Nó sẽ ít đẹp hơn là hiển thị đúng cách.

Tôi đăng này ban đầu trong câu trả lời cho câu hỏi nào liên quan đến tại Output data from all columns in a dataframe in pandas

0

khác, khá cách tiếp cận đơn giản là để gọi danh sách chức năng:

list(df['one'][2]) 
# output: 
['This is very long string very long string very long string veryvery long string'] 

Không đáng kể, điều đó là không tốt để tu viện để liệt kê toàn bộ các cột, nhưng đối với một dòng đơn giản - tại sao không phải là

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