如何使用 pandas 为整个列换行?
Posted
技术标签:
【中文标题】如何使用 pandas 为整个列换行?【英文标题】:How to wrap text for an entire column using pandas? 【发布时间】:2018-02-09 15:22:14 【问题描述】:我想用 pandas 来包裹一整列。我已经设置了列的宽度,现在我只需要将整个列包裹起来,因为它们都在 1 行中。
我搜索了不同的答案,但并不直截了当。我不需要编辑列的宽度,我只想将文本包装在单元格中,这与我突出显示列 n 单击“换行文本”的作用相同。但我想使用 Python 脚本来实现,因此我想使用 pandas 来实现。
所以基本上
还有
但我想通过 pandas 来完成此操作,而不是通过单击自动换行来手动完成。而且我想将换行应用于整个列,而不仅仅是一个单元格。
【问题讨论】:
您能否重新表述问题并提供示例输入和预期输出?看到这个article 好的,编辑完帖子:) 看看.str.wrap 我已经看到了,但我不明白“12”在做什么。 它位于第 12 个字符之后的 '\n' 换行符处。什么 IDE 用于您的 python 编码?你如何显示这个数据框? 【参考方案1】:您可以使用解决方案修改example_pandas_column_formats:
import string
long_text = 'aa aa ss df fff ggh ttr tre ww rr tt ww errr t ttyyy eewww rr55t e'
data = 'a':[long_text, long_text, 'a'],'c':[long_text,long_text,long_text],
'b':[1,2,3]
df = pd.DataFrame(data)
#choose columns of df for wrapping
cols_for_wrap = ['a','c']
writer = pd.ExcelWriter('aaa.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
#modifyng output by style - wrap
workbook = writer.book
worksheet = writer.sheets['Sheet1']
wrap_format = workbook.add_format('text_wrap': True)
#dictionary for map position of selected columns to excel headers
d = dict(zip(range(26), list(string.ascii_uppercase)))
print (d)
0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F', 6: 'G', 7: 'H', 8: 'I',
9: 'J', 10: 'K', 11: 'L', 12: 'M', 13: 'N', 14: 'O', 15: 'P', 16: 'Q',
17: 'R', 18: 'S', 19: 'T', 20: 'U', 21: 'V', 22: 'W', 23: 'X', 24: 'Y', 25: 'Z'
#get positions of columns
for col in df.columns.get_indexer(cols_for_wrap):
#map by dict to format like "A:A"
excel_header = d[col] + ':' + d[col]
#None means not set with
worksheet.set_column(excel_header, None, wrap_format)
#for with = 20
#worksheet.set_column(excel_header, 20, wrap_format)
writer.save()
【讨论】:
哇哈哈我迷路了。假设我有一个 excel 文件来读取列并根据列进行换行。在那种情况下我将如何改变。你的例子是基于一个字符串,所以我无法想象如何去做。 我的示例基于数据框列的包装 -cols_for_wrap
。你需要别的东西吗?你能解释更多吗?或者在我的解决方案中有什么需要解释更多?
我只想打开 excel 文件并更改要换行的整个 C、D、E、F、G 列中的值。
我没有得到你所做的第一部分,long_text= 'aa aa ss df fff ggh ttr tre ww rr tt ww errr t ttyyy eewww rr55t e ' 分隔符是 2 种不同的方法是吗?
是的,如果需要 pandas 解决方案,则需要 df = pd.DataFrame(data)
使用 df = pd.read_excel('file')
。以上是关于如何使用 pandas 为整个列换行?的主要内容,如果未能解决你的问题,请参考以下文章