我有一个数据框,其中包含一系列数字列,然后是更多数据列
[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'
是带范围的列。
我该怎么做?
答案 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]