立即登录

注册账号

联系我们

2022年5月18日 11:23

7. DataFrame索引

导入包

import numpy as np
import pandas as pd
rng = np.random.default_rng(0)

原始数据

data = rng.random((3,4))
index = [1,2,3]
columns = ['a','b','c','d']
df = pd.DataFrame(data,index,columns)
df
# 索引出某一列,结果是一个Series
df['c']
# 增加一列 方法1 直接赋值
df['e'] = [1,2,3]
df
# 增加一列 方法1 直接赋值,特殊情况,只有一个值
df['f'] = 1 # 广播,这一列全部赋值为1
# df['f'] = [1,2] # 长度不同会报错
df
# 增加一列 方法2 算术运算,其中一列或多列进行计算
df['f'] = df['e'] * 2
df
# + 可以改变为 + - * / ** // %
df['g'] = df['e'] + df['f']
df
# 练习 增加一列为 abcd的平均值
df['h'] = sum([df['a'] , df['b'] , df['c'] , df['d']]) / 4
df
del df['e']
del df['f']
del df['g']
del df['h']
# 增加一列 方法3 布尔运算
df['e'] = df['b'] > 0.5
df
# pop删除, 有一个返回值
df.pop('e')
df
d = df.pop('d')
print(df) # 删除了
df['d'] = d
print(df) #  后悔了
# 使用loc方法来索引数据
# 如果要索引index,需要loc
data = rng.random((5,4))
index = [1,2,3,4,5]
columns = ['a','b','c','d']
df = pd.DataFrame(data,index,columns)
df
# 索引单行
df.loc[1]
# DataFrame切片 切豆腐
df.loc[1:2] # 闭区间 包含两端
# 可以设置步长
df.loc[1:5:2]
# 集合
df.loc[[1,2,4]]
# 第1个参数,代表index ,第2个参数代表columns
df.loc[1:2,'a'] # 结果是Series
df.loc[1:2,['a']] # 结果是一个DataFrame
df.loc[[1,2,3,4],['a']]
# 第1个参数,代表index ,第2个参数代表columns
df.loc[1:2,'a':'b']
# 练习
df.loc[1:4,'a':'b']
# 从头开始,可以省略:左边
df.loc[:4,'a':'b']
# 到尾结束,可以省略:右边
df.loc[3:,'a':'b']
df.loc[:,'a':'c']
df.loc[:3,'a':'c':2]
df.loc[:3,['a','c']]
# 练习
df.loc[2:4:2,['a','c','d']]
# 使用idloc方法来索引数据,通过index的下标和columns的下标
data = rng.random((5,4))
index = [1,2,3,4,5]
columns = ['a','b','c','d']
df = pd.DataFrame(data,index,columns)
df
# iloc ,第1个参数index, 第2个参数是columns
df.iloc[3:]
df.iloc[2:,2:]
df.iloc[[1,2,4],[2,3]]
df.iloc[::2,[1,3]]

 

留言

    马小江的评论:

    讲的太好了b( ̄▽ ̄)d

  • 马小江
    2022年5月18日 09:40

    讲的太好了b( ̄▽ ̄)d

    回复

给我留言