本教程是熊猫切片的很好的教程。确保您签出。在一些片段上…要对带有条件的数据帧进行切片,请使用以下格式:
>>> df[condition]
这将返回数据框的一部分,您可以使用对其建立索引iloc
。这是您的示例:
>>> df[df.A > 3].iloc[0]
A 4 B 6 C 3 Name: 2, dtype: int64
如果您真正想要的是行号,而不是使用iloc
,则为df[df.A > 3].index[0]
。
获取第一行,其中A> 4 AND B> 3:
>>> df[(df.A > 4) & (df.B > 3)].iloc[0]
A 5 B 4 C 5 Name: 4, dtype: int64
获取第一行,其中A> 3 AND(B> 3 OR C> 2)(返回第2行)
>>> df[(df.A > 3) & ((df.B > 3) | (df.C > 2))].iloc[0]
A 4 B 6 C 3 Name: 2, dtype: int64
现在,对于最后一种情况,我们可以编写一个函数来处理返回降序排列的帧的默认情况:
>>> def series_or_default(X, condition, default_col, ascending=False):
... sliced = X[condition]
... if sliced.shape[0] == 0:
... return X.sort_values(default_col, ascending=ascending).iloc[0]
... return sliced.iloc[0]
>>>
>>> series_or_default(df, df.A > 6, 'A')
A 5
B 4
C 5
Name: 4, dtype: int64
如预期的那样,它返回第4行。