2017-03-18 111 views
-1

我有一個數據幀是這樣的:計數值賦值給新列在大熊貓數據幀

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 

我想創建一個列「我」,這是本質上的列數在適用的情況下計算A到H,忽略適用情況。輸出會是這樣的:

I 
4 
6 
5 

我已經試過np.isnan,pd.isnull,。所有(),.bool,.ANY,.empty,.item,.count- NONE正在工作。

任何人都可以展示如何做到這一點?

回答

0

假設我們有以下數據框:

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 

所有NoneNan值是字符串:

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 

,我們可以做到以下幾點:

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 

如果您已經有NoneNaN (而不是字符串):

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