2017-02-09 73 views
3

如果我有一個具有NULL或一些非空值的序列。如何找到值不爲NULL的第一行,以便我可以向用戶報告數據類型。如果該值非空,則該系列中的所有值都是相同的數據類型。熊貓 - 在列中找到第一個非空值

感謝

+1

杜佩:http://stackoverflow.com/questio ns/23309514 /從數據幀中的每一列計算第一個非缺失值 – EdChum

回答

4

您可以通過loc使用first_valid_index與選擇:

s = pd.Series([np.nan,2,np.nan]) 
print (s) 
0 NaN 
1 2.0 
2 NaN 
dtype: float64 

print (s.first_valid_index()) 
1 

print (s.loc[s.first_valid_index()]) 
2.0 
+0

工作得非常好! –

2

對於這一系列將返回第一個沒有空值:

創建系列S:

s = pd.Series(index=[2,4,5,6], data=[None, None, 2, None]) 

其中創建了該系列:

2 NaN 
4 NaN 
5 2.0 
6 NaN 
dtype: float64 

您可以通過使用獲得的第一個非NaN的值:

s.loc[~s.isnull()].iloc[0] 

返回

2.0 
如果您在另一方面

有這樣一個數據幀:

df = pd.DataFrame(index=[2,4,5,6], data=np.asarray([[None, None, 2, None], [1, None, 3, 4]]).transpose(), 
        columns=['a', 'b']) 

看起來像這樣:

a  b 
2 None 1 
4 None None 
5 2  3 
6 None 4 

你可以使用這個(對於列)每列中的第一個非空值:

df.a.loc[~df.a.isnull()].iloc[0] 

,或者如果你想不包含空值的第一行的任何地方,你可以使用:

df.loc[~df.isnull().sum(1).astype(bool)].iloc[0] 

將返回:

a 2 
b 3 
Name: 5, dtype: object 
+0

不認爲數據框中的任何列的第一個非空值? –

+0

我已更新,答案儘可能清晰 – Skirrebattie

相關問題