【问题标题】:groupby - TypeError 'DataFrame' object is not callablegroupby - TypeError 'DataFrame' 对象不可调用
【发布时间】:2014-02-05 23:29:50
【问题描述】:

这里是新手——我的第一次尝试似乎还不错,但这是我第二次使用 pandas。 在 Windows 7 上使用 Pandas 0.12.0 时,我从 SQL 读取了 2 个数据帧 一个按预期使用 groupby ,所以我确定我的问题不是语法。 但另一方面,当 type(reddf) 返回 pandas.core.frame.DataFrame 时,尝试 reddf.groupby('any column') 我得到 - 最后几行 -

    c:\python27\lib\site-packages\pandas\core\groupby.pyc in __init__(self, index, grouper,     name, level, sort)
   1197             # no level passed
   1198             if not isinstance(self.grouper, np.ndarray):
-> 1199                 self.grouper = self.index.map(self.grouper)
   1200                 if not (hasattr(self.grouper,"__len__") and \
   1201                    len(self.grouper) == len(self.index)):

c:\python27\lib\site-packages\pandas\algos.pyd in pandas.algos.arrmap_int64 (pandas\algos.c:62839)()

TypeError: 'DataFrame' object is not callable

我知道 groupby 没问题,并且该列存在,因此数据框上还有一些其他约束/条件,我只是不知道或吹过去了。 那么什么可能导致这个错误呢?我该怎么办?我将来应该寻找什么?

要求的信息

print type(reddf.index)
<class 'pandas.core.index.Int64Index'>

print repr(reddf.index) 
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], dtype=int64)

print type(reddf.index.map)
<type 'instancemethod'>

print repr(reddf.index.map)
<bound method Int64Index.map of Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], dtype=int64)>

Just in case
reddf gives
<class 'pandas.core.frame.DataFrame'>
Int64Index: 20 entries, 0 to 19
Data columns (total 24 columns):
AssetId                  20  non-null values
DateAdded                20  non-null values
ModelId                  20  non-null values
UsageTypeId              20  non-null values
DateAdded                20  non-null values
Name                     20  non-null values
NatureId                 20  non-null values
IsContainer              20  non-null values
SparePartNumber          8  non-null values
ProductNumber            19  non-null values
SupportCategoryOid       20  non-null values
SerialNumber             20  non-null values
IpAddress                20  non-null values
Description              20  non-null values
CustomsId                15  non-null values
AssetTag                 20  non-null values
ParentId                 5  non-null values
ManagementProcessorId    7  non-null values
OperatingSystem          20  non-null values
OsVersion                20  non-null values
SystemName               20  non-null values
LocationId               10  non-null values
RomVersion               20  non-null values
MacAddress               19  non-null values
dtypes: bool(1), datetime64[ns](2), float64(3), int64(5), object(13)

尤其是在执行 reddf.groupby('ModelId') 时出现错误。 谢谢

感谢大家, 重复的字段名称引起了我的问题,我不敢相信我以前没有注意到 最后一条评论。

现在,我不明白 .index 输出如何消除其他问题,您能详细说明一下吗?如果缺少索引怎么办,groupby 应该不能正常运行,为什么不呢?只是寻找一个简短的解释,如果你指向代码,那很好。 感谢您的帮助,伙计们。

【问题讨论】:

  • 感谢更新信息;这排除了多种可能的原因。
  • 你能发布一个 csv 来复制这个吗? (它是否适用于 reddf=reddf[:5, :5] ?)

标签: python group-by pandas typeerror


【解决方案1】:

是由 'DateAdded' 列的重复引起的。重命名它,你就可以开始了。

【讨论】:

    【解决方案2】:

    仅供参考,重复的列名不应再导致此错误。如果您使用的是最新的 pandas,则此错误是由其他原因引起的。

    见:https://github.com/pandas-dev/pandas/pull/8210

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 2019-08-09
      • 2018-02-01
      相关资源
      最近更新 更多