Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将dataframe列包装为具有不同长度约束的多列的文本_Python_Regex_Word Wrap - Fatal编程技术网

Python 将dataframe列包装为具有不同长度约束的多列的文本

Python 将dataframe列包装为具有不同长度约束的多列的文本,python,regex,word-wrap,Python,Regex,Word Wrap,我有一个多栏的数据框,其中最重要的是标题。我需要将这个标题拆分为多个列(假设为4列),每个列都有一个单独的长度约束(column1=10个字符,column2=15个字符,column3=15,column4=25)。我已经研究了使用textwrap实现这一点的方法,但无法确定如何将textwrap应用于数据帧。也可以选择一个迭代过程,将整个字符串拆分为单词并重新编译,同时根据约束检查重新编译的长度 示例标题:快速行动。可用空间有限。 结果 为了让这一切变得真正有趣,我是Python的新手,所以

我有一个多栏的数据框,其中最重要的是标题。我需要将这个标题拆分为多个列(假设为4列),每个列都有一个单独的长度约束(column1=10个字符,column2=15个字符,column3=15,column4=25)。我已经研究了使用textwrap实现这一点的方法,但无法确定如何将textwrap应用于数据帧。也可以选择一个迭代过程,将整个字符串拆分为单词并重新编译,同时根据约束检查重新编译的长度

示例标题:
快速行动。可用空间有限。

结果


为了让这一切变得真正有趣,我是Python的新手,所以请温和一点。

在这里查看整个解决方案:

import pandas as pd

d = {'junk': 'Act fast. Limited space available.'}
df = pd.DataFrame(d.values(), columns=['raw_text'])

df = df['raw_text'].str.extract(r'^(?P<column1>.{1,10}\b)(?P<column2>.{1,15}\b)(?P<column3>.{1,15}\b)(?P<column4>.{0,25}\b)', expand=True)
print(df)

您可以使用一个正则表达式,例如,是否为每列保留完整的单词(没有从一行到下一行的连字号)?我认为这是其中最棘手的部分。另外,你能提供完整的正则表达式行吗?我以前从未在Python中使用过正则表达式。谢谢。正则表达式工作得很好!我甚至用结果列表的索引来识别第一列——这对我来说是一个小小的奇迹。最后一个问题(希望如此)是如何将正则表达式应用于数据框架中的列,而不是简单的文本字符串?谢谢你的快速原始答案!
import pandas as pd

d = {'junk': 'Act fast. Limited space available.'}
df = pd.DataFrame(d.values(), columns=['raw_text'])

df = df['raw_text'].str.extract(r'^(?P<column1>.{1,10}\b)(?P<column2>.{1,15}\b)(?P<column3>.{1,15}\b)(?P<column4>.{0,25}\b)', expand=True)
print(df)
      column1         column2    column3 column4
0  Act fast.   Limited space   available