在 Jupyter Notebook 中显示 DataFrame 时,如果字符串值太长,最后一个字符将被省略:
df = pd.DataFrame({'A':['ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ']})
display(df)
Run Code Online (Sandbox Code Playgroud)
输出:
| A | |
|---|---|
| 0 | ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST... |
我想改变行为,只在字符串太长时省略中间字符:
| A | |
|---|---|
| 0 | ABCDEFGHIJKLMNOPQRSTUVW...DEFGHIJKLMNOPQRSTUVWXYZ |
是否可以?
从文档中,您可以构建自定义格式化程序。
def formatter(x):
if isinstance(x, str):
if len(x) > pd.options.display.max_colwidth:
display_width = pd.options.display.max_colwidth
split = int((display_width-3) / 2)
if display_width % 2: # if odd number
return x[:split] + "..." + x[-split:]
else:
return x[:(split+1)] + "..." + x[-split:]
else:
return x
return None
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
df.style.format(formatter)
Run Code Online (Sandbox Code Playgroud)
| A | |
|---|---|
| 0 | ABCDEFGHIJKLMNOPQRSTUVW...DEFGHIJKLMNOPQRSTUVWXYZ |
这只是一种显示格式,因此数据不会改变。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |