在pandas

时间:2015-05-16 08:00:44

标签: python pandas

我有一个hdf文件,打印出来像这样:

print dt['data1']
=>

              column1  column2  column3  
row1                3        8        2        
row2                4        3        0  
row3                12       1        14
row4                -5       5        25

1)我如何按行搜索或“选择”它?也就是说,

dt.get_row('row3')
=> row3                12       1        14

2)我如何按行和列值搜索?那是

dt.get_row('row2').where(column_value=3)
=> column2

2 个答案:

答案 0 :(得分:1)

将您的pandas DataFrame设置为df

df = dt['data1']

您可以使用ix获取行:

 df.ix['row3']

这会将结果显示为Series

column1    12
column2     1
column3    14
Name: row3, dtype: int64

您还可以将数值作为NumPy数组访问:

>>> df.ix['row3'].values
array([12,  1, 14])

或行的名称:

>>> df.ix['row3'].name
'row3'

以及row2中的列,其值等于3,其中包含:

r2 = df.ix['row2']
r2[r2.eq(3)].index

这会为您提供Index个对象:

Index(['column2'], dtype='object')

您也可以访问单个元素:

>>> r2[r2.eq(3)].index[0]
'column2'

答案 1 :(得分:0)

以下是我可以使用的代码段。不确定这是否是最好的方法。

>>> import pandas as pd
>>> df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})
>>> df
    AAA  BBB  CCC<br>
0    4   10  100<br>
1    5   20   50<br>
2    6   30  -30<br>
3    7   40  -50<br>
>>> df.iloc[0]
AAA      4
BBB     10
CCC    100
Name: 0, dtype: int64
>>> df.iloc[0].AAA
4

希望这就是你要找的东西。