程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

无法在 python 中将文本转换为数据框

发布于2024-11-25 16:42     阅读(399)     评论(0)     点赞(23)     收藏(5)


我正在尝试使用 Python 将 转换textdataframe

样本文本: 'This is \nsample text\n\nName|age\n--|--\n1.abc|45\n2.xyz|34'

最终期望输出:

在此处输入图片描述

我为实现上述输出所遵循的步骤如下:

  1. 将文本分成多行并将其分配给变量:我曾尝试使用它print()来处理该文本formatted_text = print('This is \nsample text\n\nName|age\n--|--\n1.abc|45\n2.xyz|34'),但无法将其分配为print()返回NoneType,因此这里出现错误。

此步骤后的期望输出:

This is 
sample text

Name|age
--|--
1.abc|45
2.xyz|34
  1. 使用上面line break text存储在variable一个 CSV 文件中的内容,用分隔符|创建一个数据框:我一直在考虑将其处理为pd.read_csv(formatted_text,sep='|', skipinitialspace=True)

此步骤后的期望输出:

在此处输入图片描述

我之前尝试在 SO 帖子中解释这个问题,但我想我解释得不太好,所以帖子被关闭了。我希望这次我能解释我的问题。这可能是一个愚蠢的任务,但我已经坚持了很长时间,如果能得到任何帮助,我将不胜感激。


解决方案


可能的解决方案:

text = 'This is \nsample text\n\nName|age\n--|--\n1.abc|45\n2.xyz|34'

pd.read_csv(StringIO(text), lineterminator='\n', engine='c', header=None)

输出:

             0
0     This is 
1  sample text
2     Name|age
3        --|--
4     1.abc|45
5     2.xyz|34

要拆分列,我们可以str.split使用read_csv

(pd.read_csv(StringIO(text), lineterminator='\n', engine='c', header=None)[0]
 .str.split('|', expand=True))

输出:

             0     1
0     This is   None
1  sample text  None
2         Name   age
3           --    --
4        1.abc    45
5        2.xyz    34


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2045894/9e91e7a9b65161a25864/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)