DataFrame数据读取
读取具体单元格值
方法一 df[‘ColName’][行号]
方法二 df.values[1][1]
df.values 去掉行名、列名只剩下数组构成的数组 ‘numpy.ndarray’
可用df.values[行号]取出整行数据
用df.values[行号][列号]取出单个数据
读取一列
df[‘ColName’]
读取多列
按列名取列
列举:
df[[‘ColName1’,‘ColName2’]] #取ColName1和ColName2两列
df.loc[:,[‘ColName1’,‘ColName2’,‘ColName3’]] #取ColName1和ColName2和ColName3三列
切片:
df.loc[:,‘ColName1’:‘ColName2’]#取ColName1到ColName2(含ColName2)的所有列
如:
df = pd.DataFrame({'one':[1,2,3],'two':[2,4,5],'three':[7,8,9]},index=[1,2,3])
print(df.loc[:,'one':'three'])
输出结果:
one two three
1 1 2 7
2 2 4 8
3 3 5 9
按列号取列
df.iloc[:,1:3] #取第二列(列号为1)和第三列(列号为2)
读取一行
df.loc[行号]或者df.iloc[行号]
区别如下
1.loc location 参数可以是自定义的行号
iloc integer 参数只能是默认的行号
如:
df = pd.DataFrame({'one':[1,2,3],'two':[2,4,5]},index = [1,2,3])
print(df.iloc[1])
print(df.loc[1])
输出:
one 2
two 4
Name: 2, dtype: int64
one 1
two 2
Name: 1, dtype: int64
2.切片索引是否包含右边
loc 包括,若自定义索引非阿拉伯数字,会报错;若有阿拉伯数字的自定义索引,按照该索引切片;没有就按照默认索引。
iloc 不包括,按照默认索引切片。与基础的df[行号1:行号2]切片效果一致。
如:
print(df.loc[1:2])#取自定义索引号为1和2的行
print(df.iloc[1:2])#取默认行号为1的行,即第二行
输出:
one two
1 1 2
2 2 4
one two
2 2 4
读取多行
df.loc[行号1,行号2]读取行号1和行号2数据
df[行号1:行号2]读取行号1到行号2的前一个的数据
DataFrame删除行
df = df.drop(自定义行号或者行名,没有自定义的话就是默认索引)
DataFrame删除列
df = df.drop(‘列名’,axis = 1)
DataFrame新增列
df.insert(新增列的列序号,‘新增列列名’,value)
value可以是一个值,该列所有值都是该值 ;也可以是长度等于行号的列表,一一对应。
DataFrame的创建
数组转化为DataFrame
df = pandas.DataFrame(nArray)
字典转化为DataFrame(values类型为series)
dic = {‘ColName’:,‘ColName1’:}
df = pandas.DataFrame(dic,index=[])
如:
df = pd.DataFrame({'one':data['POINT_X'],'two':data['POINT_Y']},index = [i for i in range(len(data))]])
dic = {‘ColName’:,‘ColName1’:}
如:
df = pd.DataFrame({'one':[1,2,3],'two':[2,4,5]},index = [1,2,3])
注意:index 为行索引,可随意更改;Columns 为字典键,不可以改,否则取不到值。