首页 > 解决方案 > 具有非整数索引和 groupby 的 pandas DataFrame 应用

问题描述

我有以下DataFrame非整数索引:

df = pd.DataFrame(index=[1.0,1.4,2,2.5], data={'a': ['a','b','a','b']})

     a
1.0  a
1.4  b
2.0  a
2.5  b

当我做

df.groupby('a').apply(lambda x: 42)

我得到以下异常:

Traceback (most recent call last):
  File "/opt/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 2895, in get_loc
    return self._engine.get_loc(casted_key)
  File "pandas/_libs/index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 386, in pandas._libs.hashtable.Float64HashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 393, in pandas._libs.hashtable.Float64HashTable.get_item
KeyError: 0.0

如果我reset_index()在分组之前,我会得到预期的结果:

df.reset_index().groupby('a').apply(lambda x: 42)

Out[130]: 
a
a    42
b    42
dtype: int64

如何在不必重置索引的情况下对组进行分组并将函数应用于组?

对于它的价值,我使用 pandas 1.1.3。

标签: pythonpandas

解决方案


推荐阅读