我有以下内容:
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
它有效,但我有一个大数据集,而且速度很慢。 什么是更好的选择。
答案 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