从没有列标签的表中获取选定的行

时间:2015-08-04 18:03:55

标签: python pandas

df = pd.DataFrame([
    [-0.5, 'foo', 0],
    [ 1.5, 'bar', 1],
    [-1.5, 'foo', 2],
    [ 0.0, 'baz', 3],     
    [-0.6, '   ', 4],
    [-1.1, 'qux', 5],         
    ],columns='A B C'.split())
x = df[df['C'].isin([2,3])]
print x

结果看起来像

     A    B  C
2 -1.5  foo  2
3  0.0  baz  3

虽然如果列没有标签

df = pd.DataFrame([
    [-0.5, 'foo', 0],
    [ 1.5, 'bar', 1],
    [-1.5, 'foo', 2],
    [ 0.0, 'baz', 3],     
    [-0.6, '   ', 4],
    [-1.1, 'qux', 5],         
    ])
x = df[df[[2]].isin([2,3])]
print x

结果看起来像

    0    1   2
0 NaN  NaN NaN
1 NaN  NaN NaN
2 NaN  NaN   2
3 NaN  NaN   3
4 NaN  NaN NaN
5 NaN  NaN NaN 

pandas是否可以进行行选择,而列没有标签?

2 个答案:

答案 0 :(得分:2)

尝试使用以下代码 -

x = df[df[2].isin([2,3])]

示例/演示 -

In [40]: x = df[df[2].isin([2,3])]

In [41]: x
Out[41]:
     0    1  2
2 -1.5  foo  2
3  0.0  baz  3

我认为不同之处在于 -

In [44]: type(df[[2]])
Out[44]: pandas.core.frame.DataFrame

In [46]: type(df[2])
Out[46]: pandas.core.series.Series

答案 1 :(得分:0)

使用ix索引器:

也可以更明确
df[ df.ix[:,2].isin([2,3]) ]
#     0    1  2
#2 -1.5  foo  2
#3  0.0  baz  3