创建df:

>>> df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list('1234'))

>>> df

A B C D

1 0 1 2 3

2 4 5 6 7

3 8 9 10 11

4 12 13 14 15

1,删除行

1.1,drop

通过行名称删除:

df = df.drop(['1', '2']) # 不指定axis默认为0

df.drop(['1', '3'], inplace=True)

通过行号删除:

df.drop(df.index[0], inplace=True) # 删除第1行

df.drop(df.index[0:3], inplace=True) # 删除前3行

df.drop(df.index[[0, 2]], inplace=True) # 删除第1第3行

1.2,通过各种筛选方法实现删除行

详见pandas“选择行单元格,选择行列“的笔记

举例,通过筛选可以实现很多功能,例如要对某行数据去重,可以获取去重后的index列表后,使用loc方法:

>>> df.loc['2','B']=9

>>> df

A B C D

1 0 1 2 3

2 4 9 6 7

3 8 9 10 11

4 12 13 14 15

>>> chooses = df['B'].drop_duplicates().index

>>> df.loc[chooses]

A B C D

1 0 1 2 3

2 4 9 6 7

4 12 13 14 15

2,删除列

2.1,del

del df['A'] # 删除A列,会就地修改

2.2,drop

通过列名称删除:

df = df.drop(['B', 'C'], axis=1) # drop不会就地修改,创建副本返回

df.drop(['B', 'C'], axis=1, inplace=True) # inplace=True会就地修改

使用列数删除,传入参数是int,列表,者切片:

df.drop(df.columns[0], axis=1, inplace=True) # 删除第1列

df.drop(df.columns[0:3], axis=1, inplace=True) # 删除前3列

df.drop(df.columns[[0, 2]], axis=1, inplace=True) # 删除第1第3列

2.3,通过各种筛选方法实现删除列

详见pandas“选择行单元格,选择行列“的笔记

3,增加行

3.1,loc,at,set_value

想增加一行,行名称为‘5',内容为[16, 17, 18, 19]

df.loc['5'] = [16, 17, 18, 19] # 后面的序列是Iterable就行

df.at['5'] = [16, 17, 18, 19]

df.set_value('5', df.columns, [16, 17, 18, 19], takeable=False) # warning,set_value会被取消

3.2,append

添加有name的Series:

s = pd.Series([16, 17, 18, 19], index=df.columns, name='5')

df = df.append(s)

添加没有name的Series,必须ignore_index:

s = pd.Series([16, 17, 18, 19], index=df.columns)

df = df.append(s, ignore_index=True)

可以 append字典列表,同样需要必须ignore_index:

ls = [{'A': 16, 'B': 17, 'C': 18, 'D': 19}, {'A': 20, 'B': 21, 'C': 22, 'D': 23}]

df = df.append(ls, ignore_index=True)

3.3,逐行增加

简单的逐行添加内容,可以:

df.loc[len(df)] = [16, 17, 18, 19]

但需要注意:len(df)生成的是int,如果生成的int,df已经存在了,会覆盖该行数据,而不会新增

3.4,插入行

增加行没找到类似insert这种可以插入的方法,暂时替代方法可以先reindex,再赋值:

df = df.reindex(index=df.index.insert(2, '5'))

df.loc['5'] = [16, 17, 18, 19]

4,df增加列

一般涉及到增加列项时,经常会对现有的数据进行遍历运算,获得新增列项的值,所以这里结合对DataFrame的遍历讨论增加列。

例如,想增加一列'E',值等于'A'和'C'列对应值之和。

4.1,遍历DataFrame获取序列的方法

s = [a + c for a, c in zip(df['A'], df['C'])] # 通过遍历获取序列

s = [row['A'] + row['C'] for i, row in df.iterrows()] # 通过iterrows()获取序列,s为list

s = df.apply(lambda row: row['A'] + row['C'], axis=1) # 通过apply获取序列,s为Series

s = df['A'] + df['C'] # 通过Series矢量相加获取序列

s = df['A'].values + df['C'].values # 通过Numpy矢量相加获取序列

4.2,[ ],loc

通过df[]或者df.loc添加序列

df.loc[:, 'E'] = s

df['E'] = s

4.3,Insert

可以指定插入位置,和插入列名称

df.insert(0, 'E', s)

4.4,concat

s = pd.Series([16, 17, 18, 19], name='E', index=df.index)

df = pd.concat([df, s], axis=1)

4.5,iloc和loc遍历过程中给列赋值

效率比较低

df['E']是DataFrame的一个Series,是引用,对其修改也能改变DataFrame,但运行时报了Warning

df['E'] = None # 需事先创建e列,否则iloc遍历会报错,loc遍历无需事先创建

for i in range(len(df)):

df['E'].iloc[i] = df['A'].iloc[i] + df['C'].iloc[i]

# SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

不用Series不会报Warning:

df['E'] = None

col_no = [i for i in df.columns].index('E')

for i in range(len(df)):

df.iloc[i, col_no] = df['A'].iloc[i] + df['C'].iloc[i]

用loc无需先给E列赋空值:

for i in df.index:

df.loc[i, 'E'] = df.loc[i, 'A'] + df.loc[i, 'C']

4.6,逐列增加

简单的逐列添加内容,可以:

df[len(df)] = [16, 17, 18, 19]

但需要注意:len(df)生成的是int,如果生成的int,df已经存在了,会覆盖该列数据,而不会新增

4.7,其他方法

增加3列,EFG,value默认为np.NaN

df = pd.concat([df, pd.DataFrame(columns=list('EFG'))]) # 列的次序无法指定,并且fillna时会对整个df做出调整

df = df.reindex(columns=list('ABCDEFG'), fill_value=0) # 列的次序按照list指定,并且fill_value只对新增列做出调整,推荐!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python pandas 增加一列_pandas删除行删除列增加行增加列的实现相关推荐

  1. pandas 增加行、列

    pandas 增加行.列 文章目录 pandas 增加行.列 添加行 添加列 import pandas as pd df1 = pd.DataFrame({'1列': ['1行1列', '2行1列' ...

  2. Numpy数组图像基本操作方法,及截取ROI、增加行与列

    Numpy数组截取ROI,增加列.行 1)图片基本操作:读写.显示.缩放.旋转 2)截取ROI,为图片增加行.列 参考 图片在Numpy数组中使用ndarry表示的. 比如分辨率: 400 * 500 ...

  3. pandas删除行删除列,增加行增加列

    举例:创建一个新df: df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list('1234')) ...

  4. 学习笔记(15):R语言入门基础-增加行或列

    立即学习:https://edu.csdn.net/course/play/24913/285719?utm_source=blogtoedu stringSAsFactors=FALSE 组成:可以 ...

  5. python pandas库详解_Pandas 库的详解和使用补充

    pandas 库总体说明 Pandas 基亍 NumPy.SciPy 补充了大量数据操作功能,能实现统计.凾组.排序.透规 表,可以代替 Excel 的绛大部凾功能. Pandas 主要有 2 种重要 ...

  6. python pandas csv时间聚合_pandas中简单统计分组聚合函数的介绍

    说明: 这里只是简单的说明了一些pandas中的一些我在毕设中使用到的函数,这个 模块的并未具体其他的一些功能并未详细的进行说明. pandas 简单介绍 Python语言的Pandas模块是一种高效 ...

  7. python pandas csv 写文件_Pandas读写CSV文件的方法介绍(附代码)

    本篇文章给大家带来的内容是关于Pandas读写CSV文件的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 读csv:使用pandas读取import pandas ...

  8. Python pandas dataframe 分组聚合时,分组组名并入列的方法

    转载,侵删,感谢原作者 利用pandas做分组聚合时,分组组名默认是变化成index,如图 grouped = tdf.groupby('uid') mean=grouped.mean(); forw ...

  9. pandas 取excel 中的某一列_干货Python Pandas 做数据分析之玩转 Excel 报表分析

    本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...

最新文章

  1. 微电网日前优化调度 。算例有代码(0)
  2. 用BluePrint进行Web页面设计
  3. /opt/hbase/conf 中不能启动hbase_Hbase从入门到入坑
  4. .net微信公众号开发——基础接口
  5. 每日小记2017.3.7
  6. Xshell官网免费版
  7. win10便签常驻桌面_Win10用户的印象笔记便签深度体验 | 大使专栏
  8. 配置ouster雷达过程
  9. android 收税计算器,个人所得税计算器2021
  10. 进入mariadb_MariaDB基础操作
  11. Autovue 21.0.2.4 发布
  12. Caché 实操《Caché 算法与数据结构-数组原理》学习笔记
  13. 批量转换 gbk 文件到utf8 文件,不引用三方类库【 java 代码】
  14. [oracle]通过DBLINK远程查询带DBLINK的视图
  15. 哲理短文-人生什么最重要
  16. python学了可以干什么,python是用来干嘛的
  17. 基于unity+HTC VIVE的室内漫游交互(教你如何“无代码”VR交互)
  18. 数据库概论之模式分解理论(理解简单明了)
  19. DirectIO(O_DIRECT) 详解
  20. 苍蝇眼睛_桌子的布局像苍蝇一样下降=)

热门文章

  1. 计算机开机自动进入bios,为什么电脑一开机就自动进入BIOS界面 电脑开机重复进入bios解决方法...
  2. 关于正月十六工作室更换新LOGO的通知
  3. java 如何利用ISAPI实现设置RTSP播放参数,代码怎么写
  4. 利用代码自动逛店铺拿喵币
  5. 数据结构串之寻找整数
  6. 2500 tons quarry machine
  7. 按键精灵移动端系列 - IOS(苹果版)安装1.3.8 deb 下载地址
  8. java 压缩图片时候加水印
  9. 【Verilog】马里奥小游戏的FPGA实现
  10. 用java画企鹅_Fireworks绘制简笔QQ企鹅图像