带有范围列的数据框。给定数字,选择出现数字的行

时间:2016-07-28 18:42:47

标签: python pandas

我有一个数据框,其中包含一系列数字列,然后是更多数据列

[1, 2, 3, ..., 10]    | a | b 
[11, 12, 13, 14, ...] | c | d  

给定10,14等数字,如何选择该数字在该范围内的行,即10,我想要返回[1, 2, 3, ..., 10] | a | b行。

到目前为止,我已尝试dfs['A'].ix[10 in dfs['A']['B']]其中dfs是数据框字典,'A'是数据框,'B'是带范围的列。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用apply遍历列B并单独检查每个元素,这些元素返回用于子集化的逻辑索引:

df = pd.DataFrame({"B": [list(range(1,11)), list(range(11,21))], "col1":["a", "b"], "col2":["c", "d"]})

df[df["B"].apply(lambda x: 10 in x)]

#                                 B   col1  col2
# 0 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]      a     c

答案 1 :(得分:1)

df = pd.DataFrame({'ranges':[range(11), range(11,20)], 'dat1':['a','c'], 'dat2':['b','d']})
mask = df.ranges.apply(lambda x: 10 in x)
df.ix[mask]