groupby - TypeError 'DataFrame de l'objet n'est pas appelable
newbie - ma première incursion semblait ok, mais c'est mon 2ème utilisation des pandas.
En utilisant les Pandas 0.12.0 sur windows 7, j'ai lu 2 dataframes à partir de SQL
On travaille avec groupby comme prévu, donc je suis sûr que mon problème n'est pas de la syntaxe.
Mais sur les autres, où le type(reddf) retour des pandas.de base.cadre.DataFrame, lorsque vous essayez reddf.groupby( 'colonne'), j'ai - enfin quelques lignes -
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
Je sais groupby est OK, et la colonne existe, donc il y a certains autre contrainte /condition sur le dataframe que je ne suis pas au courant ou a soufflé passé.
Alors, quelle est la cause de cette erreur? Et que dois-je faire? Que dois-je regarder pour l'avenir?
info demandé
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)
et j'obtiens l'erreur de faire un reddf.groupby('ModelId"), en particulier.
grâce
Merci à tout le monde,
Le nom de champ en double m'a causé le problème, je ne peux pas croire que je n'ai pas remarqué avant
le dernier commentaire.
Maintenant, je ne comprends pas comment le .l'indice de sortie éliminé d'autres problèmes, pouvez-vous développer? Que faire si l'indice est manquant, ne devrait pas groupby ont été en mesure de fonctionner correctement, pourquoi pas? Il suffit de regarder pour une courte explication, et si vous le point de code, c'est très bien.
apprécions l'aide, les gars.
Pouvez-vous poster un csv de reproduire cela? (Cela fonctionne avec reddf=reddf[:5, :5] ?)
OriginalL'auteur user3204120 | 2014-01-16
Vous devez vous connecter pour publier un commentaire.
est causée par la répétition de "DateAdded" de la colonne. Renommer et vous êtes bon pour aller.
OriginalL'auteur Ciba
Pour info, les noms de colonne en double ne devrait plus faire cette erreur. Si vous utilisez la dernière pandas alors cette erreur est causée par quelque chose d'autre.
Voir: https://github.com/pandas-dev/pandas/pull/8210
OriginalL'auteur WWH