首页 > 解决方案 > 如何使用 python/pandas 根据行和列中的公共前缀查找/过滤/组合?

问题描述

我是编码新手,很难表达/搜索正确的术语来帮助我完成这项任务。在我的工作中,我从野外监测鸟类的人那里得到了一些相当大的 excel 文件。需要为数据库、报告、表格等准备结果。我希望使用 Python 来自动化一些任务。

如何使用 Python(熊猫?)根据通用名称/ID 但具有唯一后缀查找某些行/列,并聚合/汇总属于该通用名称的结果?作为表中提供的示例,我需要从子区域获取所有结果,例如 AA3_f、AA3_lf 和 A​​A3_s,表示为主要区域 AA3 的新行中子区域的总和(每个物种的海鸥总数)。

表/数据框示例

有人可以为这项任务提供一些代码,或者以其他方式帮助我吗?我已经搜索并观看了许多关于 python、numpy、pandas 和 matplotlib 的教程 .. 仍然对如何设置它一无所知

任何帮助表示感谢谢谢!

更新:

@Harsh Nagouda,感谢您的回复。我使用 groupby 函数尝试了您的示例,但我无法分成正确的组。“Locality”列只有唯一的值/ID,因为它们都有一个后缀(它们是子类别)。

我试图通过切片字符串来解决这个问题:

eng.Locality.str.slice(0,4,1)

我设法切掉了足够的东西,以便余数 = AA3_ , AA4_ 等等。然后我尝试在 groupby 函数中进行切片。那失败了。然后我尝试使用 pandas.Dataframe.apply() 进行切片。那也失败了。

eng["Locality"].apply(eng.Locality.str.slice(0,4,1))
sum = eng.groupby(["Locality"].str.slice(0,4,1)).sum()

还有更多的帮助吗?正如你在上面看到的 - 我需要它:-)

标签: pythonexcelpandas

解决方案


在您的情况下,该pd.groupby选项似乎非常适合该问题。该groupby函数完全符合其含义,它将您喜欢的数据框的部分分组。

由于您提到了一个基于按地区分组并找到这些值的总和的案例,因此此代码段应该可以帮助您:

sum = eng.groupby(["Locality"]).sum()

可以在此处找到其他命令和排序样式:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html


推荐阅读