【发布时间】:2020-08-22 21:26:52
【问题描述】:
这是我的数据示例
threats =
binomial_name
continent threat_type
Africa Agriculture & Aquaculture 143
Biological Resource Use 102
Climate Change 3
Commercial Development 36
Energy Production & Mining 30
... ... ...
South America Human Intrusions 1
Invasive Species 3
Natural System Modifications 1
Transportation Corridor 2
Unknown 38
我想使用 for 循环获取每个大陆的前 5 个值并将其附加到一个数据框中。 这是我的代码-
continents = threats.continent.unique()
for i in continents:
continen = (threats
.query('continent == i')
.groupby(['continent','threat_type'])
.sort_values(by=('binomial_name'), ascending=False).
.head())
top5 = appended_data.append(continen)
但是我得到了错误 - KeyError: 'i'
我哪里错了?
【问题讨论】:
-
.query(f'continent == {i}')? -
不只是
df.sort_values('binomial_name').groupby('continent').nlargest(5)有什么特别的原因吗? -
@Marat 这是错误 - AttributeError: Cannot access callable attribute 'nlargest' of 'DataFrameGroupBy' objects,尝试使用 'apply' 方法
-
@jakub - 不,仍然出现错误
-
这不是一个确切的代码(应该按特定列过滤),但问题仍然存在 - 是否存在阻止使用标准 pandas 函数的东西?它可以作为单线完成
标签: python python-3.x pandas for-loop