根据一列数组从pandas.dataframe中选择

时间:2019-04-01 02:24:04

标签: python pandas

我有一个数据框,其中的列包含数组(所有1x9数组)。对于该列中的所有行,我希望找到第三个元素为1的那些行,并从相应行的另一列中选择值。 例如,我希望选择“ cal_nCa”值(116),其中info_trig中的第二个元素为0

    info_trig                        cal_nCa
0   [0, 1, 0, 0, 0, 0, 0, 0, 0]        128   
1   [0, 1, 0, 0, 0, 0, 0, 0, 0]         79  
2   [0, 0, 0, 1, 0, 0, 0, 1, 0]        116   
3   [0, 1, 0, 0, 0, 0, 0, 0, 0]         82

我根据Selecting with complex criteria from pandas.DataFrame尝试了df["A"][(df["B"] > 50)]行中的某项。

选择所需的行时:

data["info_trig"][:][3]

我只能成功选择特定行和该行中的第三个元素。但是无法选择每一行中的所有第三个元素。循环可能有效,但我希望有一个更清洁的出路。

2 个答案:

答案 0 :(得分:0)

使用str访问第3列位置值

data["info_trig"].str[3]

答案 1 :(得分:0)

data.apply(lambda x: x['cal_nCa'] if x['info_trig'][1] == 0 else 0, axis = 1)

这将返回一个仅在cal_nCa中的第二个元素值为info_trig时才保留在0中的值的系列:

0      0
1      0
2    116
3      0
dtype: int64

或者,您只能以此选择所需的行:

data[data.apply(lambda x: True if x['info_trig'][1] == 0 else False, axis = 1)]

希望它会对您有所帮助。