在pandas datafram中将数据和标签拆分为两个单独的列

2024-09-24 04:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,行如下:

一堆文本,带有逗号、标点符号等

这一行总是以火腿或垃圾邮件结尾。如何读取包含这样的数据的csv文件,并将文本的第一部分存储在“name”字段中,最后一位存储为“label”字段(在上面的情况下,它将是:

  df["label"] = "ham", 
  df["name"] = 'A bunch of text, with commas, punctuations etc.' 

是否还有一种方法可以剔除未按我上面描述的方式指定的文本?假设某行末尾没有垃圾邮件或火腿,我想跳过那些。如何使用熊猫.read_csv()实现这个目标?在


Tags: 文件csv数据name文本df结尾垃圾邮件
2条回答

也可以在数据导入过程中执行此操作。您将需要使用正则表达式作为分隔符。表达式正在查找每行后面跟有某个内容的最后一个逗号。以下是一个很好的例子:

import pandas as pd
import io

txt = u"A bunch of text, with commas, punctuations etc.,ham"

with io.StringIO(txt) as f:
    df = pd.read_csv(f,
                     sep=",(?=[^,]+$)",
                     header=None,
                     engine="python",
                     names=['name', 'label']))

print(df)

应产生:

^{pr2}$

我希望这能起到作用。在

假设这是您的原始数据帧:

df

                                                Col1
0  A bunch of text, with commas, punctuations etc...
1                                 test,foo,.bar,spam

使用df.str.rsplit。在,上拆分一次,并将结果展开为两列。df.rename将优雅地重命名您的列。在

^{pr2}$

相关问题 更多 >