【问题标题】:How to separate strings in a dataframe column based on a delimiter?如何根据分隔符分隔数据框列中的字符串?
【发布时间】:2020-05-29 13:45:49
【问题描述】:

所以,我有一个如下所示的数据框:

我想将“文件名”列中的值分隔为基于“-”和“。”的字符串。并删除扩展名。然后我想根据“\”和“:”将“路径”列中的值分成字符串。我该怎么做?

【问题讨论】:

标签: python pandas dataframe text-processing


【解决方案1】:

您在此处查找的内容并不完全清楚。但这是我最好的解释。

设置:

df = pd.DataFrame({
    "Filename": ["doc-hi.txt", "oh-my-god.txt"],
    "Path": ["C:\asdf\asdf\asdf\kd.txt", "C:\asdcsc.docx"]
})

单独的字符串

# "separate the values in 'Filename' column into strings based on '-' and '.' and also remove the extension name"
df["Filename_split"] = df["Filename"].apply(lambda _: os.path.splitext(_)[0]).str.split(r'\.|-')

# "separate the values in 'Path' column into strings based on '\' and ':'"
df["Path_split"] = df["Path"].str.split(r'\\|:')

中间输出

    Filename        Path                    Filename_split  Path_split
0   doc-hi.txt      C:sdf\sdf\sdf\kd.txt    [doc, hi]       [C, , asdf, asdf, asdf, kd.txt]
1   oh-my-god.txt   C:sdcsc.docx            [oh, my, god]   [C, sdcsc.docx]

将令牌重新组合在一起

要将字符串列表重新组合成单​​个字符串,str.join:

df['Filename_split'].str.join(' ')
df['Path_split'].str.join(' ')

【讨论】:

  • 谢谢!尽管您的回答很有帮助,但我不希望结果在列表中,而只是在一般空格分隔的字符串中,因此我可以使用 TFIDF 矢量化器对列进行矢量化。
  • 奇怪的是,您不能使用列表作为 TFIDF Vectorizer 的输入 - 因为我给您的是字符串的标记化(1-gram)版本。
  • 无论如何,我已经添加了将字符串重新连接在一起的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 2020-04-18
  • 2020-04-11
相关资源
最近更新 更多