Pandas之csv文件对列行的相关操作
1.Pandas对数据某一列删除
1.删除列
import pandas as pd
df = pd.read_csv(file)
#axis=1就是删除列
df.drop(['列名1','列名2'], axis=1)
2.删除记录,也就是行
import pandas as pd
df = pd.read_csv(file)
#axis=0就是删除记录也就是行
df.drop([0,1,3], axis=0)
2.Pandas之修改列名
1.第一种是没有表头,想要添加表头
因为csv文件是没有表头的,但是默认会把第一行作为表头,而实际上可能第一行就是我们的数据,不能够丢失。
所以要做read_csv函数参数加上header=None,然后再进行保存文件,这样系统就会加上0,1这样的表头了,再次打开,就可以使用rename函数进行表头的更改了。
import pandas as pd
data2 = pd.read_csv('D:/transpond_data_1.csv')
data2.head()
Out:
	0	1
0	mrMzW0lLIA	0
1	mqJrVB2hb6	0
2	m7nJFCgLiK	0
3	mSFZpU8qVB	0
4	mjBQVsjogW	0
上面这个已经是保存后的有表头的文件了,可以看到就是0,1默认。
df = pd.DataFrame(data2)
df = df.rename(columns={'0':'mid_c','1':'num'})
print(df)
Out:
              mid_c  num
0        mrMzW0lLIA    0
1        mqJrVB2hb6    0
2        m7nJFCgLiK    0
3        mSFZpU8qVB    0
4        mjBQVsjogW    0
...             ...  ...
1619147  mdO38FApFD    0
1619148  mNlc2caNpk    0
1619149  mkbybukSaa    0
1619150  mTStAdjFQt    0
1619151  mA3atazmJ6    0
最后再进行保存文件
df = pd.DataFrame(df,columns=['mid_c','num'])
print(df)
df.to_csv('D:\\transpond_data.csv',index=False,encoding='utf-8')
已经改成功了。
2.第二种是有表头直接进行改表头
可以直接打开文件,进行rename函数的使用,最后进行保存,省去了没有表头,进行系统默认添加表头这一步。
3.pandas操作csv多个列,生成新的列
import pandas as pd
df = pd.read_csv(file)
df.eval('new1 = 气温 + 湿度 + PM2P5' , inplace=True)
#inplace这个参数表示是否在原数据上进行操作
这样new1这一列就是通过该文件中的其他几列通过运算得出的新列,直接添加在该文件上。
df.query("age==24")
这样就可以把列age中等于24的选出来了。
#注意:query后面只支持string形式的值,而‘age’==24返回的是一个bool类型,结果不是true就是false,所以需要进行如上操作"age==24",才可返回正确结果
4.pandas去除文件中的重复项
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
- subset : column label or sequence of labels, optional
用来指定特定的列,默认所有列 - keep : {‘first’, ‘last’, False}, default ‘first’
删除重复项并保留第一次出现的项 - inplace : boolean, default False
是直接在原来数据上修改还是保留一个副本 
df.drop_duplicates('B','first',inplace = True)
#表示删除B列中重复的项,first保留第一次出现的项,在原数据上进行操作。
5.pandas之拼接函数merge()
pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集。
用法
DataFrame1.merge(DataFrame2, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’))
参数	说明
how	默认为inner,可设为inner/outer/left/right
on	根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置)
left_on	左连接,以DataFrame1中用作连接键的列
right_on	右连接,以DataFrame2中用作连接键的列
left_index	将DataFrame1行索引用作连接键
right_index	将DataFrame2行索引用作连接键
sort	根据连接键对合并后的数据进行排列,默认为True
suffixes	对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别
- 用例
 
#利用字典dict创建数据框
dataDf1=pd.DataFrame({'lkey':['foo','bar','baz','foo'],
                     'value':[1,2,3,4]})
dataDf2=pd.DataFrame({'rkey':['foo','bar','qux','bar'],
                     'value':[5,6,7,8]})
print(dataDf1)
print(dataDf2)
>>>
  lkey  value
0  foo      1
1  bar      2
2  baz      3
3  foo      4
  rkey  value
0  foo      5
1  bar      6
2  qux      7
3  bar      8
#inner链接
dataLfDf=dataDf1.merge(dataDf2, left_on='lkey',right_on='rkey')
>>>
  lkey  value_x rkey  value_y
0  foo        1  foo        5
1  foo        4  foo        5
2  bar        2  bar        6
3  bar        2  bar        8
#Right链接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey',how='right')
>>>
  lkey  value_x rkey  value_y
0  foo      1.0  foo        5
1  foo      4.0  foo        5
2  bar      2.0  bar        6
3  bar      2.0  bar        8
4  NaN      NaN  qux        7
#Outer链接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey', how='outer')
>>>
  lkey  value_x rkey  value_y
0  foo      1.0  foo      5.0
1  foo      4.0  foo      5.0
2  bar      2.0  bar      6.0
3  bar      2.0  bar      8.0
4  baz      3.0  NaN      NaN
5  NaN      NaN  qux      7.0
												
											Pandas之csv文件对列行的相关操作的更多相关文章
- 理解CSV文件以及ABAP中的相关操作
		
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
 - 使用Pandas读取CSV文件
		
使用Pandas读取CSV文件 import pandas as pd csv_data = pd.read_csv('birth_weight.csv') # 读取训练数据 print(csv_da ...
 - 使用pandas读取csv文件和写入文件
		
这是我的CSV文件 读取其中得tempo这一列 import pandas as pd #导入pandas包 data = pd.read_csv("E:\\毕设\\情感识别\\Music- ...
 - pandas 读csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
		
简单的代码,利用pandas模块读csv数据文件,这里有两种方式,一种是被新版本pandas遗弃的Series.from_csv:另一种就是pandas.read_csv 先说一下问题这个问题就是在读 ...
 - 使用pandas导入csv文件到MySQL
		
之前尝试过用命令行来解决csv文件导入到MySQL这个问题,没想到一直没有成功.之后会继续更新的吧,现在先用pandas来解决这个问题,虽然会复杂一点,但至少能用. 例子是导入movielens的ra ...
 - Oracle数据库导入csv文件(sqlldr命令行)
		
1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...
 - [Python]-pandas模块-CSV文件读写
		
Pandas 即Python Data Analysis Library,是为了解决数据分析而创建的第三方工具,它不仅提供了丰富的数据模型,而且支持多种文件格式处理,包括CSV.HDF5.HTML 等 ...
 - pandas读取csv文件中文乱码问题
		
1.为什么会出现乱码问题,用什么方式编码就用什么方式解码,由于csv不是用的utf-8编码,故不能用它解码. 常用的编码方式有 utf-8,ISO-8859-1.GB18030等. 2.中文乱码原因: ...
 - php生成csv文件并提供下载及相关注意事项
		
1.生成文件过程略,只要逗号分割就可以了 2.提供下载加上如下代码: header("Content-type: application/octet-stream"); heade ...
 
随机推荐
- 明解C语言 入门篇 第九章答案
			
练习9-1 /* 将字符串存储在数组中并显示(其2:初始化) */ #include <stdio.h> int main(void) { char str[] = "ABC\0 ...
 - Redis Persistent Replication Sentinel Cluster的一些理解
			
Redis Persistent Replication Sentinel Cluster的一些理解 我喜欢把工作中接触到的各种数据库叫做存储系统,笼统地说:Redis.Mysql.Kafka.Ela ...
 - struts2被淘汰的原因
			
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个Servlet.在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts2 ...
 - SpringMVC-方法四种类型返回值总结,你用过几种?
			
SpringMVC 现在算是 Java 领域的一个基础性框架了,很多人天天用,可是对于 SpringMVC 方法的返回值,你又是否完全清楚呢?今天松哥就来和大家聊一聊 SpringMVC 中四种不同类 ...
 - docker容器中使用rsyslogd
			
rsyslogd作为CentOS:7系统自带的日志管理工具,为很多服务提供了便捷的日志管理接入方案,然而 CentOS:7的官方镜像 默认是不支持rsyslogd的.我们做个实验: 1)启动测试容器 ...
 - tkinter事件键盘绑定
			
tkinter事件键盘绑定 from tkinter import * root=Tk() #创建一个框架,在这个框架中响应事件 frame=Frame(root, width=200,height= ...
 - 【开发工具】- Xshell过期了怎么办?
			
点击下边链接下载免费版 http://www.netsarang.com/download/free_license.html
 - Java 之 JDK1.8之前日期时间类
			
一.JDK1.8之前日期时间类 二. java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1 ...
 - sap设置SE38编辑器背景色
			
1.SE38,随便找个程序进入,编辑模式. 点击客户端最右下角的文件夹图标: 2.设置normal 背景颜色: 3.退出,重新进就可以了. 这里很多其他类型的颜色和字体设置,根据个人爱好调整.
 - 基于开源博客系统(mblog)搭建网站
			
基于开源博客系统(mblog)搭建网站 上一章讲了基于jpress部署的博客系统,这一章了解一下 mblog这个开源的基于springboot的博客系统,相比与jpress 的热度fork数量要少一些 ...