首页 > 解决方案 > 我们可以根据特定的词过滤数据吗?

问题描述

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

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

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

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

实际结果:

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

预期结果:

Name     Category      Amount
ABC      Sports         7485
BCD.     Sports          20

标签: pythonexcelpython-3.xpandas

解决方案


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

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

推荐阅读