Python 熊猫数据帧:如何包装没有空格的文本

Python 熊猫数据帧:如何包装没有空格的文本,python,pandas,ipython,Python,Pandas,Ipython,我正在Jupyter笔记本中查看Pandas数据框,我的数据框包含URL请求字符串,可以有数百个字符长,没有任何空格分隔字符 熊猫似乎只在有空白的单元格中包装文本,如所附图片所示: 如果没有空格,字符串将显示在一行中,如果没有足够的空间,我的选项将显示“…”,或者我必须将display.max_colwidth设置为一个巨大的数字,现在我有一个难以阅读的表格,其中有大量滚动 有没有一种方法可以强制Pandas将文本换行,比如每100个字符换行一次,而不管是否有空格?如果您不介意在将整个内容放入

我正在Jupyter笔记本中查看Pandas数据框,我的数据框包含URL请求字符串,可以有数百个字符长,没有任何空格分隔字符

熊猫似乎只在有空白的单元格中包装文本,如所附图片所示:

如果没有空格,字符串将显示在一行中,如果没有足够的空间,我的选项将显示“…”,或者我必须将
display.max_colwidth
设置为一个巨大的数字,现在我有一个难以阅读的表格,其中有大量滚动


有没有一种方法可以强制Pandas将文本换行,比如每100个字符换行一次,而不管是否有空格?

如果您不介意在将整个内容放入数据帧之前解决这个问题,您可以按照下面所述的方法来做。在您的特定情况下,如果您希望每行长度为10个字符,您应该:

# Input
line = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0; GomezAgent 3.0) 
like Gecko'
n = 10

# Split
line = [line[i:i+n] for i in range(0, len(line), n)]

# The rest is easy
df = pd.DataFrame(line)
print(df)

如果没有空格,您将得到:

顺便说一句,最后一行开头出现空白是因为没有像前面几行那样的10个字符来填充该行。在jupyter中,您可以通过使用
df.style.set_属性(**{'text-align':'left'})
:


您可以使用数据的前100个字符创建一个新列

data['new_column'] = [i[:100] for i in data['old_column']]
你可以设置

import pandas as pd
pd.set_option('display.max_colwidth', 0)

然后,每一列都将与它需要的大小一样大,以便充分显示它的内容。它将不包装单元格的文本内容(除非它们包含空格)。

您可以使用
str.wrap
方法:

df['user_agent'] = df['user_agent'].str.wrap(100) #to set max line width of 100

如果您在Jupyter中只是出于临时显示目的,只需每隔100个字符插入一个空格:

chunk_size = 100

data['new_column'] = [' '.join([val[0+i:chunk_size+i] for i in range(0, len(string), chunk_size)] for val in data['old_column']

虽然这看起来像是一个问题的原因,首先是因为多个功能被折叠到一个列中。很难说看不到更大的数据集,但如果它们都遵循相同的模式,我强烈建议将其拆分为多个功能(浏览器、浏览器版本、操作系统、操作系统版本等),这将使使用此数据集的任何其他工作变得更容易。

看一看,特别是参数
break\u long\u words
。我只是想添加与上下文相关的方法:
带有pd.option\u context('display.max\u colwidth',0):
这与问题有什么关系???你的包装在哪里?@matanster+1!哇+我很惊讶,尼尔奇!(你很幸运,我不喜欢向下投票!:)1)整个
数据['new_column']=
行产生语法错误2)“string”未定义!在发布代码之前是否检查代码???这个答案值得100次否决票,但我不喜欢否决票