【问题标题】:How I can remove element from each row?如何从每一行中删除元素?
【发布时间】:2021-06-18 03:28:03
【问题描述】:

以上是我的数据,我想从所有行中删除“国际电影”和“独立电影”。

如果我看到该数据的第一行,它会以字符串格式出现,并带有“,”分隔符。如果我使用 split(',') 将每一行的每个 str 转换为一个列表,它就会以这种方式拆分。

我检查了这个的第一行;

有空间 ==> '国际电影' 但是,如果这是第零个元素,那么它没有空间,请检查某些行。检查下面 ==> '国际电影'

如果出现“国际电影”,我必须使用两个 if 循环然后删除它,如果出现“国际电影”,则使用 pop 删除它。但它不适用于我的情况。

谁能帮我解决这个问题?

检查一下这个 Google Colab,一切都在那里。你可以带我去那里。

https://colab.research.google.com/drive/1lq68InH5gBt2T6G1LkWMrRNHzljxlifw?usp=sharing

【问题讨论】:

  • 请将代码、错误和输出作为文本而不是图像。

标签: python arrays pandas list numpy


【解决方案1】:

您可以为此尝试基于 re 的拆分,而不是在 ',' 上拆分。

您可以在此处阅读有关 re:https://docs.python.org/3/library/re.html

import re
df.Genre.apply(
    lambda x: re.split('\s*,\s*', x)).apply(
        lambda x: [e for e in x if e not in [ 'International Movies', 'Independent Movies']])

【讨论】:

  • 您也可以使用lambda x: [x.strip() for x in x.split(",")] 作为第一个 lambda,而不是使用 re。它将删除拆分值中的所有前导和尾随空格。
【解决方案2】:

尽可能避免使用.apply,因为它在处理大型数据集时相当慢。而是使用另一个 pandas 工具。在这种情况下,这可以通过pandas.Series.str.replace 实现:

df.Genre.str.replace(", (International|Independent) Movies", '')

请注意,我正在利用目标字符串(显然)仅位于中心或末尾的事实。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多