pandas DataFrame的定义与增删查改

非最终版本,不断完善修改,整理成自己可以参考的文档

一、定义

基本数据定义

import numpy as np
import pandas as pd

df = pd.DataFrame(data = [['lisa','f',22],['joy','f',22],['tom','m','21']], 
                  index = [1,2,3], 
                  columns = ['name','sex','age'])

image-20210814182424057

具有层次化索引的DataFrame

dfmi = pd.DataFrame([list('abcd'),list('efgh'),list('ijkl'),list('mnop')],
                    columns=pd.MultiIndex.from_product([['one','two'],
                                                        ['first','second']]))

image-20210814182511746

二、增

2.1 按列增加

citys = ['ny','zz','xy']
df.insert(0, 'city', citys)  # 在指定位置添加列
jobs = ['student','AI','teacher']
df['job'] = jobs  # 在最后添加一列job

2.2 按行增加

df.loc[4] = ['zz','mason','m',24,'engineer']  # 添加一行,索引为4;若有4,则直接修改原值
df = df.append(df.loc[2])  # 用append在尾部直接添加一列;append会创建一个修改的副本

三、删

3.1 删除行

df.drop([1,4], axis=0, inplace=True)  # 删除【所有】index为1和3的行,inplace=True表示直接删除

3.2 删除列

df.drop(['name', 'sex'], axis=1, inplace=True)  # 删除【所有】名为name和sex的列
del df['name'] # 删除name列
ndf = df.pop('name')  # 删除name列,返回该列Series给ndf

四、查

4.1 df[‘column_name’] 和df[row_start_index: row_end_index]

# 查找列
df['name']  # name列,返回Series类型
df[['name']]  # 返回DataFrame类型
df[['name', 'gender']]  # 返回两列

# 查找行,注意有冒号,类似list的切片
df[0:1]  # 查找第0行
df[0:3:2] # 第0行和第2行
df[-1::-1]  # 倒叙排列(第2行,第1行,第0行)

4.2 df.loc[index,column]

重点:边界值【左闭右闭】,例如 [ , ‘name’ : ‘sex’],同时包含name列和sex列

# 按照索引【值】进行查找
# 小tip  行用位置,列用索引值
df.loc[df.index[0:2].to_list(), ['name', 'sex']]
df.loc[df.index[0:2].to_list(), 'name':'sex']  # 或者这样写,都可以

以上实现 查找红框内的值,如图

image-20210814193714680

进一步,关于多重索引值的查找

在dfmi中查找红框中的值

image-20210814200136703

dfmi.loc[0:2 ,('one', 'first'):('two', 'first')]  # 注意这里行范围要写【0:2】

4.3 df.iloc[row_index, column_index]

重点:边界值【左闭右开】,不包含右边界值

# 按照索引【位置】进行查找
df.iloc[0:2, 0:2]  # 实现查找上面红框的值

# 小tip,获得'name'列的位置
df.get_loc('name')

五、改

5.1 改行列标签名(name)

# index.name修改
df.index.names = ['index_name']
df.index.name = 'index_name'

# columns.name修改
df.columns.names = ['columns_name']
df.columns.name = 'columns_name'

# 多重索引标签名修改,如图
df_groupby = df.groupby(['name', 'sex']).sum()
df_groupby.index.names = ['index0_name', 'index1_name']

image-20210814190656417

5.2 改行列标签

# 修改index
df.index = ['a', 'b', 'c']
df.rename({1:'a'}, axis=0, inplace=True)

# 修改columns
df.columns = ['name', 'gender', 'age']
df.rename({'sex':'gender'}, axis=1, inplace=True)

5.3 修改值

5.3.1 使用loc
df.loc[1, 'name'] = '云天明'
df.loc[2, ['name', 'sex']] = ['罗辑', '男']
5.3.2 使用iloc

与上面loc类似,不再赘述

【参考文章】

  1. CSDN 夏雨淋河:Pandas DataFrame数据的增、删、改、查

  2. CSDN 我只是个过路人:Pandas–DataFrame修改值

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值