💎【行业认证·权威头衔】
✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家
✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主
✔ 技术生态共建先锋:横跨鸿蒙、云计算、AI等前沿领域的技术布道者
🏆【荣誉殿堂】
🎖 连续三年蝉联"华为云十佳博主"(2022-2024)
🎖 双冠加冕CSDN"年度博客之星TOP2"(2022&2023)
🎖 十余个技术社区年度杰出贡献奖得主
📚【知识宝库】
覆盖全栈技术矩阵:
◾ 编程语言:.NET/Java/Python/Go/Node...
◾ 移动生态:HarmonyOS/iOS/Android/小程序
◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙
◾ 游戏开发:Unity3D引擎深度解析
在数据分析的过程中,灵活地对数据进行增删改查(CRUD操作)是至关重要的。Pandas库中的DataFrame对象作为一种强大的数据结构,为我们提供了高效、直观的数据处理能力。无论是数据清洗、预处理,还是后续的分析与可视化,掌握DataFrame的增删改查操作,都是每位数据分析师必不可少的技能。
本文将详细介绍如何在DataFrame中进行数据的增、删、改、查操作。我们将通过具体的示例,帮助你理解如何灵活地管理和操控数据,使你的分析工作更加高效和顺畅。
方法一:直接赋值
import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
data = [[110,105,99],[105,88,115],[109,120,130],[112,115,140]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
df['物理']=[88,79,60,50]
# df.loc[:,'物理'] = [88,79,60,50]
print(df)
# wl =[88,79,60,50]
# df.insert(1,'物理',wl)
# print(df)
输出:
方法二:使用loc
属性添加列
df.loc[:, '物理'] = [88, 79, 60, 50] # 等效于直接赋值
方法三:使用insert
插入列
wl = [88, 79, 60, 50]
df.insert(1, '物理', wl) # 在第1列后插入新列
print(df)
输出:
语文 物理 数学 英语
明日 110 88 105 99
七月流火 105 79 88 115
高袁圆 109 60 120 130
二月二 112 50 115 140
方法一:使用loc
添加单行
df.loc['钱多多'] = [100, 120, 99] # 添加一行数据
print(df)
输出:
语文 数学 英语
明日 110 105 99
七月流火 105 88 115
高袁圆 109 120 130
二月二 112 115 140
钱多多 100 120 99
方法二:使用concat
添加多行
df_insert = pd.DataFrame(
{'语文': [100, 123, 138], '数学': [99, 142, 60], '英语': [98, 139, 99]},
index=['钱多多', '童年', '无名']
)
df = pd.concat([df, df_insert], ignore_index=True)
print(df)
输出:
语文 数学 英语
明日 110 105 99
七月流火 105 88 115
高袁圆 109 120 130
二月二 112 115 140
钱多多 100 99 98
童年 123 142 139
无名 138 60 99
DataFrame.drop() 方法
drop()
方法用于删除DataFrame中的行或列。语法格式如下:
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
index
或columns
,则labels
是多余的。axis=0
:表示按行删除,默认值为0。axis=1
:表示按列删除。None
。如果指定了该参数,labels
可以省略。None
。如果指定了该参数,labels
可以省略。level=0
:表示按第1级索引删除整行。level=1
:表示按第2级索引删除整行。None
。False
(默认值):返回一个新的DataFrame对象,原DataFrame不受影响。True
:原DataFrame会被直接修改,不会返回新的DataFrame。raise
(默认值):如果指定的标签不存在,则抛出错误。ignore
:忽略错误,不会抛出异常。import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
data = [[110,105,99],[105,88,115],[109,120,130],[112,115,140]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
# df.drop(['数学'],axis=1,inplace=True) #删除某列
# df.drop(columns='数学',inplace=True) #删除columns为“数学”的列
# df.drop(labels='数学', axis=1,inplace=True) #删除列标签为“数学”的列
# df.drop(['明日','二月二'],inplace=True) #删除某行
# df.drop(index='明日',inplace=True) #删除index为“明日”的行
# df.drop(labels='明日', axis=0,inplace=True) #删除行标签为“明日”的行
print(df)
import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
data = [[110,105,99],[105,88,115],[109,120,130],[112,115,140]]
name = ['明日','七月流火','高袁圆','二月二']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
# df.drop(index=df[df['数学'].isin([88])].index[0],inplace=True) #删除“数学”包含88的行
# df.drop(index=df[df['语文']<110].index[0],inplace=True) #删除“语文”小于110的行
print(df)
方法一:直接赋值
df.columns = ['语文(上)', '数学(上)', '英语(上)']
方法二:使用rename
方法
df.rename(columns={'语文': '语文(上)', '数学': '数学(上)'}, inplace=True)
df.index = ['1', '2', '3', '4'] # 直接赋值
df.rename({'明日': '1', '七月流火': '2'}, axis=0, inplace=True) # 使用rename
修改整行
df.loc['明日'] = [120, 115, 109] # 修改整行数据
df.loc['明日'] += 10 # 所有值加10
修改整列
df.loc[:, '语文'] = [115, 108, 112, 118] # 修改“语文”列所有值
修改单个值
df.loc['明日', '语文'] = 115 # 修改指定单元格
使用iloc
按位置修改
df.iloc[0, 0] = 115 # 修改第1行第1列
df.iloc[:, 0] = [115, 108, 112, 118] # 修改第1列所有值
print(df['语文']) # 通过列名获取数据
print(df.语文) # 等效方法(列名为有效标识符时)
print(df[0:3]) # 获取前3行(包头不包尾)
print(df['数学'][2]) # 获取第3行的“数学”列数据
print(df.loc['高袁圆', '语文']) # 通过标签获取
print(df.iloc[2, 0]) # 通过位置获取(第3行第1列)
loc
和insert
方法。drop
指定行/列标签或条件。loc
)或位置(iloc
)精准操作。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。