pandas.DataFrame 索引

df.loc / df:选择行与列

df:选择列

默认一般用于选择列,但也可以选择行

import numpy
import pandas

df = pandas.DataFrame(numpy.random.rand(12).reshape(3,4),
	index = ["one","two","three"],columns = list("abcd"))
print(df)

# 按照列名选择列,只选择一列则输出Series,选择多列输出DataFrame
data1 = df["a"] # 输出Series
data2 = df[["b","c"]] # 输出DataFrame
print(data1) 
print(data2)

df[]中为数字时,默认选择行
只能进行切片的选择(df[:1]),不能单独选择(df[0])

data5 = df[:1]
print(data5) # 输出结果为Dataframe,即便只选择一行
# df[]不能通过索引标签名来选择行(df['one'])

df.loc:选择行

按照index默认选择行,需要使用.loc

import numpy
import pandas

df = pandas.DataFrame(numpy.random.rand(12).reshape(3,4),
	index = ["one","two","three"],columns = list("abcd"))
print(df)

# 只选择一行则输出Series,选择多行输出DataFrame
# 单标签索引
data3 = df.loc["one"] # 输出Series
# 多标签索引,如果标签不存在,则返回NaN
data4 = df.loc[["one","two"]] # 输出DataFrame
# 切片索引,末端包含
data6 = df.loc["one":"three"]
print(data3)
print(data4)
print(data6)

df.iloc:按整数位置选择行

df.iloc:按照整数位置(从轴的0到length-1)选择行
类似列表的索引,其顺序就是dataframe的整数位置,从0开始计算

import numpy
import pandas
df = pandas.DataFrame(numpy.random.rand(12).reshape(3,4),
 	index = ["one","two","three"],columns = list("abcd"))

print(df)

# 单位置索引
# 和loc索引不同,索引不能超出数据行数的整数位置
print(df.iloc[0])

# 多位置索引
print(df.iloc[2,3])

# 切片索引
# 末端不包含
print(df.iloc[1:3])

布尔型索引

import numpy
import pandas
df = pandas.DataFrame(numpy.random.rand(12).reshape(3,4) * 100,
  	index = ["one","two","three"],columns = list("abcd"))

# True返回原数据,False返回NaN
print(df[df < 20])

# 单列做判断
# 保留单列判断为True的行数据,包括其他列
print(df[df["a"] > 20])

# 多列做判断
# True返回原数据,False返回NaN
print(df[df[["a","b"]] > 50])

# 多行做判断
# True返回原数据,False返回NaN
print(df[df.loc[["one","three"]] < 50])

多重索引

同时索引行和列
先选择列再选择行,相当于对于一个数据,先筛选字段,再选择数据量

import numpy
import pandas
df = pandas.DataFrame(numpy.random.rand(12).reshape(3,4) * 100,
   	index = ["one","two","three"],columns = list("abcd"))

print(df["a"].loc[["one","three"]]) # 选择a列的one,three行
print(df[['b','c','d']].iloc[::2]) # 选择b,c,d列的one,three行
print(df[df['a'] < 50].iloc[:2]) # 选择满足判断索引的前两行数据
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值