如何获得满足熊猫某些条件的列索引?

时间:2016-05-25 11:11:32

标签: python pandas

我有以下内容:

def get_values_from_row(row, th=0.9):
    """Get a list of column names that meet some condition that their values are larger than a threshold.

Args:
    row(pd.DataFrame): a row.
    th(float): the threshold.

Returns:
    string. contains the columns that it's value met the condition.
"""
return row[row > th].index.tolist()[0] 

对于每一行,我想得到满足条件的第一列的索引,即它的值大于某个值,让我们说大于 4.

在此示例中,答案为1(对应于第一行中值7的索引)和0(对应于第二行中值5的索引)和1(对应于索引)第三行中值5的值)。 这意味着答案是[1,0,0]。

我用apply方法尝试了它:

TreeView

它有效,但我有一个大数据集,而且速度很慢。 什么是更好的选择。

1 个答案:

答案 0 :(得分:2)

我认为first_valid_index需要get_loc

print (x[x > 4])
     a    b
0  NaN  7.0
1  5.0  NaN
2  7.0  5.0

print (x[x > 4].apply(lambda x: x.index.get_loc(x.first_valid_index()), axis=1))
0    1
1    0
2    0
dtype: int64