按行和列获取单元格的值

时间:2016-10-21 09:49:30

标签: python pandas indexing

CD_FARE MTH DAY ID_CALENDAR   H0    H1  H2  H3  PE1   PE2    PE3    PE4
2.0      1   M    Cal01       1     2   1   3   0.14  0.15   0.1    0.2 
2.0      1   T    Cal01       1     2   1   3   0.14  0.16   0.1    0.2
2.0      1   W    Cal01       1     2   4   3   0.14  0.12   0.1    0.2
2.0      1   T    Cal01       2     2   1   3   0.14  0.11*   0.1    0.2
2.0      1   F    Cal01       4     2   1   3   0.14  0.18   0.1    0.2 

我想知道如何从特定单元格中获取值。

例如:我想返回值0.11。 我知道行的位置(在本例中为3),以及列的名称(PE2)。 我可以这样选择数据吗?:

data = df.iloc[3, 'PE2']

2 个答案:

答案 0 :(得分:2)

显然它不起作用,它给出了一个ValueError

ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types

但是,如果您使用df.loc[3, 'PE2']代替iloc方法,则可以使用

答案 1 :(得分:0)

如果需要按位置选择需要Series.iloc

print (df['PE2'].iloc[3])
0.11

样品:

df = pd.DataFrame({'PE2':[1,2,3],
                   'B':[4,5,6]}, index=['a','b','c'])

print (df)
   B  PE2
a  4    1
b  5    2
c  6    3

#third row in colum PE2
print (df['PE2'].iloc[2])
3

#index value c and column PE2
print (df.ix['c','PE2'])
3

#index value c and column PE2
print (df.loc['c','PE2'])
3

#third row and second column
print (df.iloc[2,1])
3

但如果需要按索引和列值选择,请使用ixDataFrame.loc

df = pd.DataFrame({'PE2':[1,2,3],
                   'B':[4,5,6]})

print (df)
   B  PE2
0  4    1
1  5    2
2  6    3

print (df.loc[2, 'PE2'])
3

print (df.ix[2, 'PE2'])
3

您还可以在selection by label中查看selection by positionpandas documentation