2017-03-18 1 views
-1

J'ai une chose dataframe comme ceci:valeurs de comptage d'autres colonnes le cas échéant pour attribuer une valeur à la nouvelle colonne pandas géants dataframe

A B C D E F G H 
0 a None 123 None Nan None 2 aa,12asd 
1 None 1234 456 None Ee5 tie 233 a,123,sd 
2 None absc 789 Nan Nan abs Abc asd34vfd 

Je veux créer une colonne « I » qui est essentiellement le nombre de colonnes A à H comptant le cas échéant et ignorant le cas échéant. Sortie serait quelque chose comme:

I 
4 
6 
5 

J'ai essayé np.isnan, pd.isnull, .tout(), .bool, .Toute, .empty, .item, .count- NONE travaillent.

Quelqu'un peut-il montrer comment cela peut être fait?

Répondre

0

En supposant que nous avons la trame de données suivante:

In [76]: df 
Out[76]: 
     A  B C  D E  F G   H 
0  a None 123 None Nan None 2 aa,12asd 
1 None 1234 456 None Ee5 tie 233 a,123,sd 
2 None absc 789 Nan Nan abs Abc asd34vfd 

où toutes les valeurs None et Nan sont des chaînes:

In [81]: df.isnull() 
Out[81]: 
     A  B  C  D  E  F  G  H 
0 False False False False False False False False 
1 False False False False False False False False 
2 False False False False False False False False 

nous pouvons effectuer les tâches suivantes:

In [77]: df['I'] = df.replace(['None','Nan'], [np.nan, np.nan]).notnull().sum(1) 

In [78]: df 
Out[78]: 
     A  B C  D E  F G   H I 
0  a None 123 None Nan None 2 aa,12asd 4 
1 None 1234 456 None Ee5 tie 233 a,123,sd 6 
2 None absc 789 Nan Nan abs Abc asd34vfd 5 

Si vous ont déjà None et NaN (à la place des chaînes):

In [87]: df.isnull() 
Out[87]: 
     A  B  C  D  E  F  G  H 
0 False True False True True True False False 
1 True False False True False False False False 
2 True False False True True False False False 

In [88]: df['I'] = df.notnull().sum(1) 

In [89]: df 
Out[89]: 
     A  B C D E  F G   H I 
0  a None 123 NaN NaN None 2 aa,12asd 4 
1 None 1234 456 NaN Ee5 tie 233 a,123,sd 6 
2 None absc 789 NaN NaN abs Abc asd34vfd 5