【问题标题】:Each elements of list of strings to be split要拆分的字符串列表的每个元素
【发布时间】:2020-03-25 13:18:39
【问题描述】:

我刚刚执行了熊猫系列对象,如下所示:

0        ['str1', 'str2', 'str3', 'str4', ...]
1        ['str5', 'str6', 'str7', 'str8', ...]
2        ['str9', 'str10', 'abcde.fghi', 'str12', ...]
.
.
.

在这里,我想保留格式,并用分隔符'.'分割'abcde.fghi'之类的字符串

  1. 将“abcde.fghi”替换为“abcde”
  2. 在“abcde”之后插入“fghi”,然后是“str12”

它需要保持这种格式。我想要的是以下内容:

2        ['str9', 'str10', 'abcde', 'fghi', 'str12', ...]

这一系列列表不仅仅是它们。大概有300000行,所以迭代中需要split函数。

+++ 我是在应用 nltk word_tokenize 后得到这个系列的。

lists_above=mydataframe['textcolum'].apply(word_tokenize)

但是,由于数据中有很多没有空格的句子,所以我正在尝试更多步骤

【问题讨论】:

  • [x for item in ['str9', 'str10', 'abcde.fghi', 'str12'] for x in item.split('.') ]
  • 大概看看在pandas中使用apply和刚刚提供的函数@futas
  • 欢迎来到 Stack Overflow。到目前为止,您尝试过什么?

标签: python string pandas loops split


【解决方案1】:

试试这个(如果你的列表是一个字符串,第一个,如果你的列表是一个列表,第二个):

df['yourcolumn'].apply(lambda x: "', '".join(x.split('.'))) 

or

df['yourcolumn'].apply(lambda x:  eval("', '".join(str(x).split('.'))))  

输出:

0       ['str1', 'str2', 'str3', 'str4', 'str4']
1       ['str5', 'str6', 'str7', 'str8', 'str1']
2    ['str9', 'str10', 'abcde', 'fghi', 'str12']

【讨论】:

  • 我认为这仅适用于假设行是字符串而不是列表...即如果每一行 (x) 都是一个列表,则不能拆分列表
  • @DerekEden 我的数据框通常在列表中不带引号打印: 0 [str1, str2, str3, str4, str4] 1 ['str5', 'str6', 'str7', 'str8' , 'str1']
  • @DerekEden 有时会让人感到困惑,我只是按照输出进行,但我会添加一个更新作为另一个,特别是如果 Jay P 想看到
  • 我听到了..我认为他们只是用引号手动输入了列表..在 OP 中他们说“一系列列表”所以让我相信它们是一个字符串列表
【解决方案2】:

你可以很容易地在 pandas 中使用 lambda 列表推导来做到这一点:

df['words'] = df['words'].apply(lambda x: [item for sub in x for item in sub.split('.')])

【讨论】:

    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2021-08-06
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    相关资源
    最近更新 更多