python - 我们可以根据特定的词过滤数据吗?
问题描述
我正在制作一个从 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
解决方案
仅使用Series.str.split
by并通过索引选择第一个列表:.
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
df['Category'] = df['Category'].str.extract(r'([a-zA-Z]+)\.')
print (df)
Name Category Amount
0 ABC Sports 7485
1 BCD. Sports 20
推荐阅读
- python - Pythone:如何将电子邮件正文中的数据框输出用作文本
- javascript - 在反应原生的每个依赖项之前我是否需要@types/?
- android - 应用程序不显示低于棉花糖的任何内容。在棉花糖及以上它工作正常
- angular - Angular 6 Http响应错误拦截器重试请求不起作用
- keras - 如何知道keras中的特定图层索引
- ios - Alamofire 和 Objectmapper 将数组数据添加到 tableview
- javascript - 如何解决 reactjs 中的“找不到模块”webpack-cli/bin/config-yargs 错误?
- arrays - Angular 6比较两个JSON数组
- php - php类中的公共变量不起作用
- ibm-integration-bus - SOAP 信封节点上的解析器错误