Pandas to_html () cắt bớt nội dung chuỗi


81

Tôi có một DataFrameđối tượng Python Pandas chứa dữ liệu dạng văn bản. Vấn đề của tôi là khi tôi sử dụng to_html()hàm, nó sẽ cắt bớt các chuỗi trong đầu ra.

Ví dụ:

import pandas
df = pandas.DataFrame({'text': ['Lorem ipsum dolor sit amet, consectetur adipiscing elit.']})
print (df.to_html())

Đầu ra bị cắt ngắn ở adapis...

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>text</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td> Lorem ipsum dolor sit amet, consectetur adipis...</td>
    </tr>
  </tbody>
</table>

Có một câu hỏi liên quan trên SO, nhưng nó sử dụng trình giữ chỗ và chức năng tìm kiếm / thay thế để xử lý sau HTML, mà tôi muốn tránh:

Có một giải pháp đơn giản hơn cho vấn đề này? Tôi không thể tìm thấy bất cứ điều gì liên quan từ tài liệu .


2
Bạn đang xem nội dung như thế nào, nó có thông qua iPython không? thử này pd.set_option('display.max_colwidth', -1)và sau đó in html, bạn sẽ thấy rằng nó sẽ hiển thị đầy đủ các văn bản, đây là không có gì để làm với cắt ngắn của dữ liệu thực tế chỉ là một thiết lập màn hình
EdChum

@EdChum Vâng, thực sự là tôi đã xem xét IPython của HTML, nhưng cũng nhận được kết quả tương tự trong thiết bị đầu cuối python thông thường. Nhưng có, set_option khắc phục điều đó! Trong cả thiết bị đầu cuối và IPython. Không biết về khả năng đó trước đây.
Timo

gấu trúc cố gắng để bảo vệ bạn khỏi hàng tệp hiển thị các kết quả mà có thể giết chết môi trường python ít, ngoài lỗi khó hiểu Tôi đã không bao giờ nghe nói về nó cắt xén dữ liệu
EdChum

Câu trả lời:


105

Những gì bạn đang thấy là gấu trúc cắt bớt đầu ra chỉ cho mục đích hiển thị.

max_colwidthGiá trị mặc định là 50, đây là giá trị bạn đang thấy.

Bạn có thể đặt giá trị này thành bất kỳ giá trị nào bạn muốn hoặc bạn có thể đặt nó thành -1, giá trị này sẽ tắt hiệu quả:

pd.set_option('display.max_colwidth', -1)

Mặc dù tôi khuyên không nên đặt nó thành thứ gì đó có thể hiển thị dễ dàng trong bảng điều khiển hoặc ipython của bạn.

Danh sách các tùy chọn có thể được tìm thấy ở đây: http://pandas.pydata.org/pandas-docs/stable/options.html


8
`" ... "trong df.to_html ()` đánh giá là True. Có vẻ như pandasđang cắt bớt giá trị đầu ra, không chỉ màn hình.
Chris Chudzicki,

Tôi có một trường hợp rất thắc mắc, tôi mô tả trong câu hỏi này: stackoverflow.com/questions/51260756/… trong đó giá trị ô trong bảng html chứa một từ điển. Các từ điển, không lớn như từ điển này được hiển thị ổn trong các bảng khác, nhưng từ điển rất dài đặc biệt này được viết tắt bởi dấu chấm và tôi không thể hiển thị nó. Tôi đã thử nghiệm với pd.set_option ('display.max_rows', 1000), không may mắn. Bất kỳ đề xuất cho điều này hoặc thậm chí một câu trả lời cho câu hỏi của tôi?
user637338

Đây có còn là cách để làm điều này trong v 0,24 không?
Jason Strimpel

@JasonStrimpel vâng tôi tin như vậy
EdChum

1
@Superdooperhero bạn không thể, các tùy chọn hiển thị ảnh hưởng đến tất cả các cột hoặc hàng
EdChum

19

có vẻ như đó pd.set_option('display.max_colwidth', -1)thực sự là lựa chọn duy nhất. Để ngăn những thay đổi toàn cục không thể đảo ngược về cách các khung dữ liệu được hiển thị trong bảng điều khiển, bạn có thể lưu cài đặt trước đó trong một biến và khôi phục nó ngay sau khi sử dụng, như sau:

    old_width = pd.get_option('display.max_colwidth')
    pd.set_option('display.max_colwidth', -1)
    open('some_file.html', 'w').write(some_data.to_html())
    pd.set_option('display.max_colwidth', old_width)

44
Có một giải pháp đơn giản hơn nhiều làm thế nào để thiết lập tùy chọn tạm thời:with pd.option_context('display.max_colwidth', -1): output_html = df.to_html()
hynekcer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.