【问题标题】:Can we filter data on the basis of specific words?我们可以根据特定的词过滤数据吗?
【发布时间】:2019-11-06 00:19:01
【问题描述】:

我正在制作一个从 Excel 文件中读取数据的 Web 应用程序。我拥有的数据集有一列包含书籍的类别和子类别的数据,例如“Fiction.Romantic”、“Fiction.Thriller”、“Sports.Imaginative”、“Sports.AutoBiographic”等。

我希望 pandas 过滤掉数据并将总/组合值打印为“体育”、“小说”等。

有没有办法可以删除子类别('.Imaginative'、'.Thriller')并根据需要打印/显示?

有很多类别和子类别,因此手动执行它们将花费大量时间。

实际结果:

Name     Category                    Amount
ABC   Sports.Autobiographic.         7485
BCD.  Sports.Imaginative.             20

预期结果:

Name     Category      Amount
ABC      Sports         7485
BCD.     Sports          20

【问题讨论】:

    标签: python excel python-3.x pandas


    【解决方案1】:

    仅由n=1 使用Series.str.split by first . 并通过索引选择第一个列表:

    df['Category'] = df['Category'].str.split('.', n=1).str[0]
    print (df)
       Name Category  Amount
    0   ABC   Sports    7485
    1  BCD.   Sports      20
    

    或者使用Series.str.extract:

    df['Category'] = df['Category'].str.extract(r'([a-zA-Z]+)\.') 
    print (df)
       Name Category  Amount
    0   ABC   Sports    7485
    1  BCD.   Sports      20
    

    【讨论】:

    • 嘿。第一个成功了!谢谢!另外,如果有一个我不想编辑的值/词,我该如何排除它?
    • @divy10 - 你能解释更多吗?
    • 我有一列在 '.' 之后有单词,但我需要它们并且不想只编辑这个单词。说,体育。 Imaginative, Fiction.Fiction, 在所有的词中,我希望 Fiction.Fiction 在编辑其他列时保持原样。
    • @divy10 - 我认为这与此问题类似,是否可以使用示例数据、预期输出和您尝试的内容创建新问题?我认为minimal, complete, and verifiable example.
    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多