我在pandas数据框架中有几个包含长文本字符串的列,但我只对检查其中一个感兴趣。有没有一种方法可以使用沿着pd.set_option('max_colwidth', 60)的东西,但只用于单列,而不是扩展df中所有列的宽度?
pd.set_option('max_colwidth', 60)
sshcrbum1#
如果你想在Jupyter Notebook中更改显示,你可以使用Style功能。要只对某些列使用此格式,只需根据subset参数指示要放大的列即可。这基本上是HTML和CSS。
subset
### Test data df = DataFrame({'text': ['foo foo foo foo foo foo foo foo', 'bar bar bar bar bar'], 'number': [1, 2]}) df.style.set_properties(subset=['text'], **{'width': '300px'})
wmvff8tz2#
我在较新版本的Pandas上找到的最简单的解决方案在Pandas参考资料的this page中概述。搜索display.max_colwidth--页面下三分之一的地方描述了如何使用它,例如:pd.set_option('max_colwidth', 400)请注意,这将设置会话的值,或直到更改。如果您只想进行临时更改,请参阅this info临时设置上下文,例如:
display.max_colwidth
pd.set_option('max_colwidth', 400)
from pandas import option_context with option_context('display.max_colwidth', 400): display(df.head())
我还没有找到一种明显的方法来设置单个列,但是这种方法只会将那些需要更多空间的列扩展到您设置的最大值。如果试图调整如何在屏幕上/表中/为其他列腾出空间,pd.set_option('precision', 2)也可能有用,它可以更改小数位数。
pd.set_option('precision', 2)
rm5edbpk3#
以下是对我有效的方法:请记住,用您的数据替换payload。
payload = {'col1': 'col1', 'col2': 'col2'} df = pd.DataFrame(payload) response = HttpResponse(content_type='application/xlsx') response['Content-Disposition'] = f'attachment; filename="{filename}.xlsx"' with pd.ExcelWriter(response) as writer: df.to_excel(writer, sheet_name=f'worksheet_name', index=False) # Manually adjust the width of column for column in df: column_width = max(df[column].astype(str).map(len).max(), len(column)) col_idx = df.columns.get_loc(column) writer.sheets[f'worksheet_name'].set_column(col_idx, col_idx, column_width) return response
3条答案
按热度按时间sshcrbum1#
如果你想在Jupyter Notebook中更改显示,你可以使用Style功能。要只对某些列使用此格式,只需根据
subset
参数指示要放大的列即可。这基本上是HTML和CSS。wmvff8tz2#
我在较新版本的Pandas上找到的最简单的解决方案在Pandas参考资料的this page中概述。搜索
display.max_colwidth
--页面下三分之一的地方描述了如何使用它,例如:pd.set_option('max_colwidth', 400)
请注意,这将设置会话的值,或直到更改。
如果您只想进行临时更改,请参阅this info临时设置上下文,例如:
我还没有找到一种明显的方法来设置单个列,但是这种方法只会将那些需要更多空间的列扩展到您设置的最大值。
如果试图调整如何在屏幕上/表中/为其他列腾出空间,
pd.set_option('precision', 2)
也可能有用,它可以更改小数位数。rm5edbpk3#
以下是对我有效的方法:
请记住,用您的数据替换payload。