Pandas - 在列中找到第一个非空值

时间:2017-02-09 13:04:21

标签: python pandas

如果我有一个具有NULL或某些非空值的系列。如何找到值不为NULL的第一行,以便我可以向用户报告数据类型。如果该值为非null,则所有值都是该系列中的相同数据类型。

由于

3 个答案:

答案 0 :(得分:14)

您可以first_valid_index使用loc选择

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

# If your Series contains ALL NaNs, you'll need to check as follows:

s = pd.Series([np.nan, np.nan, np.nan])
idx = s.first_valid_index()  # Will return None
first_valid_value = s.loc[idx] if idx is not None else None
print(first_valid_value)
None

答案 1 :(得分:3)

对于一个系列,这将返回第一个无空值:

创建系列:

2    NaN
4    NaN
5    2.0
6    NaN
dtype: float64

创建了这个系列:

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

您可以使用以下方法获取第一个非NaN值:

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]

您可以使用此列选择每列第一个非空值(对于列a):

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

或者如果您希望第一行不包含Null值,您可以使用:

a    2
b    3
Name: 5, dtype: object

返回:

function LoadView(ident, view, data) {

	var img = $('<img>', {
		src : '/images/ajax-loading.gif'
	});

	$('#' + ident).html(img);

	data.view = view;
	data.viewid = ident;

	// console.log(data);
	$.ajax({
		url : '/cgi-bin/browser.cgi',
		data : data,
		type : 'GET',
		dataType : 'html',
		timeout : 30000000,
		success : function(result) {
			$("#" + ident).html(result);
			// set data on view
			$("#" + ident).data('data', data);
		},
		error : function(xhr, status, error) {
			var img = $('<img>', {
				src : '/images/exclamation_micro.png'
			});
			$('#' + ident).html(img.html() + error);
			// alert("Error processing request " + error);
		},
		timeout : function() {
			var img = $('<img>', {
				src : '/images/exclamation_micro.png'
			});
			$('#' + ident).html(img.html() + ' Timeout');
			// alert("Timeout processing request");
		}
	});
}

function ReloadView(view, ident) {
    // Retrieve the data for the view
    var data = $('#' + ident).data('data');
    // Reload the view
    LoadView(ident, data.view, data);
}

答案 2 :(得分:0)

您也可以改用get方法

(Pdb) type(audio_col)
<class 'pandas.core.series.Series'>
(Pdb) audio_col.first_valid_index()
19
(Pdb) audio_col.get(first_audio_idx)
'first-not-nan-value.ogg'