【问题标题】:pandas operations inside a for-loopfor循环内的熊猫操作
【发布时间】: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


【解决方案1】:

因此,执行此操作的规范方法:

df.groupby('continent', as_index=False).apply(
    lambda grp: grp.nlargest(5, 'binomial_value'))

如果要循环执行此操作,请替换此部分:

for i in continents: 
    continen = threats[threats['continent'] == i].nlargest(2, 'binomial_name') 
    appended_data.append(continen) 

【讨论】:

  • 我仍然通过循环方法收到错误。这是我的代码continents = threats.continent.unique() for i in continents: continents = threats[threats['continent'] == i].nlargest(5, 'binomial_value') top5 = appended_data.append(continen)
  • 您遇到什么错误?您可以发布数据样本吗?
  • 当然,我已经在问题中发布了我的数据样本
猜你喜欢
  • 1970-01-01
  • 2022-07-18
  • 2013-10-03
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2018-05-14
  • 2020-04-10
  • 2015-11-01
相关资源
最近更新 更多