Python Pandas:按行和列编号从dataframe访问数据
我有一个简单的程序让我困惑。我从一个csv文件中读取了一个3*10的数据,我想通过它的行和列号来访问一个特定的数据。但是失败了,我不知道为什么 matrix.txt:Python Pandas:按行和列编号从dataframe访问数据,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个简单的程序让我困惑。我从一个csv文件中读取了一个3*10的数据,我想通过它的行和列号来访问一个特定的数据。但是失败了,我不知道为什么 matrix.txt: 1,2,3,4,5,6,7,8,9,10 11,12,13,14,15,16,17,18,19,20 21,22,23,24,25,26,27,28,29,30 节目: datainput = pd.read_csv('matrix.txt',sep=',', header = None) inputinfo = datain
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
21,22,23,24,25,26,27,28,29,30
节目:
datainput = pd.read_csv('matrix.txt',sep=',', header = None)
inputinfo = datainput.shape ==> 3, 10
print datainput[3][3] => failed,but it should return 23,
如果列号等于或大于3,我无法访问任何数据。索引从0开始:
In [8]:
df
Out[8]:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10
1 11 12 13 14 15 16 17 18 19 20
2 21 22 23 24 25 26 27 28 29 30
In [11]:
df[2][2]
Out[11]:
23
由于您没有提供标题,因此标题是自动生成的,也是针对索引的,默认行为是从0
开始生成索引,如您在上面所看到的
此外,您最后的陈述不正确:
In [13]:
df[3][2], df[5][2]
Out[13]:
(24, 26)
这里,第一个下标值是列标签,后跟行标签
以下情况确实会引发按键错误:
df[3][3]
谢谢你的回复,但我仍然无法访问df[2][5],应该是25。你读过我的答案了吗?我已经说过,第一个下标是列,下一个是行,所以25应该是
df[5][2]
而不是df[2][5]
谢谢。奇怪的是,第一个下标是column,这违反了大多数其他语言的习惯。有什么特别的原因吗?我不知道我想这可能是numpy也使用的一些约定,但是numpy使用行、列作为顺序,我怀疑它遵循相同的语义,如果您的df列有诸如“col1”、“col2”等名称。。然后执行df['col1'][2]
会选择col1第3行,我刚刚测试了如果执行df[2]['col1']
会发生什么,这会引发一个关键错误,因此看起来这是熊猫开发人员有意识的设计决策