一个简单的DataFrame如下
test = pd.DataFrame([[1,2,3,4],[5,6,7,8]],index = ['a','b'],columns = ['A','B','C','D'])
显示如下:
A B C D
a 1 2 3 4
b 5 6 7 8
DataFrame的列索引可以直接获取数据:
In:test['A']
Out:
a 1
b 5
Name: A, dtype: int64
注意这里A的引号
但是,
In:test.A
Out:a 1
b 5
Name: A, dtype: int64
注意这里不用带引号,否则会报错
In:test.'A'
File "<ipython-input-36-1b55dced7ffe>", line 1test.'A'
^
SyntaxError: invalid syntax
行索引需要以这种方式获取:
In:test.loc['a']
Out:
A 1
B 2
C 3
D 4
Name: a, dtype: int64
还是要注意带引号的问题
取二维索引时,比较有意思的事情是:
先取列索引,后取行索引时可以直接取:
In:test.A.a
Out: 1
如果反过来就会报错(因为不能取到test.a)
同时,还可以以这样的方式取:
In:test.loc['a']['A']
Out: 1
In:test.loc['a','A']
Out: 1
同样要注意到引号的问题。
改变数据时,行或者列的删除也是有区别的:
列添加:添加一列,直接赋值新的一列即可,如:test['E'] = [9,10]
则test变为 :
A B C D E
a 1 2 3 4 9
b 5 6 7 8 10
列删除:pop函数,会返回被删除的列
In:test.pop('E')
Out:
a 9
b 10
Name: E, dtype: int64
同时test变为:
A B C D
a 1 2 3 4
b 5 6 7 8
行修改和增加同理,取到要求的索引进行赋值即可,借用到loc
test.loc['a'] = [4,3,9,6]
test.loc['c'] = [9,9,9,9]
test变为:
A B C D
a 4 3 9 6
b 5 6 7 8
c 9 9 9 9
行删除:用到drop函数
In:test.drop('b')
Out:
A B C D
a 4 3 9 6
c 9 9 9 9
注意这里返回了删除之后剩下的DataFrame,注意与列删除的区别
同时,test的值为:
A B C D
a 4 3 9 6
b 5 6 7 8
c 9 9 9 9
对原值没有影响!!!切记