pandas操作
python中使用了pandas的一些操作,特此记录下来:
生成DataFrame
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
print(data)
得到结果为:
label v_id
0 a,b v_1
1 e,f,g v_2
按照逗号分隔并拼接
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
print(df)
得到结果为:
v_id label
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
筛选符合条件的行
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
})
target_label = data.loc[data['label'].isin(["e", "f"])]
print(target_label)
得到结果为:
v_id label
1 v_2 e
1 v_2 f
筛选不符合条件的行
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
'num': [1, 2, 3, 4, 5],
})
other_label1 = data[~data['label'].isin(["f", "g"])]
print(other_label1)
other_label2 = data.query("num<=3 & label!='b'")
print(other_label2)
得到结果为:
v_id label
0 v_1 a
0 v_1 b
1 v_2 e
label num v_id
0 a 1 v_1
2 e 3 v_2
替换某一列的值
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
})
df = data.copy()
df.loc[df["label"] != "", 'label'] = "1"
print(df)
得到结果为:
v_id label
0 v_1 1
0 v_1 1
1 v_2 1
1 v_2 1
1 v_2 1
取某一列转换成list
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
})
print(data["label"].values.tolist())
得到结果为:
['a', 'b', 'e', 'f', 'g']
按照某一列去重
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
})
print(data.drop_duplicates(subset=['v_id']))
得到结果为:
v_id label
0 v_1 a
1 v_2 e
复制dataframe并拼接
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
})
data_copy = data.copy()
times = 2
for i in range(times):
data_copy = pd.concat([data_copy,data])
print(data_copy)
得到结果为:
v_id label
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
更改某一列类型
data = pd.DataFrame({
'v_id': ["v_1", 'v_1', "v_2", "v_2","v_2"],
'label': ["a", 'b', "e", "f", "g"],
'num': [1.0, 2.0, 3.0, 4.0, 5.0],
})
data["num"] = data[["num"]].astype(int)
print(data)
得到结果为:
label num v_id
0 a 1 v_1
1 b 2 v_1
2 e 3 v_2
3 f 4 v_2
4 g 5 v_2
pandas操作的更多相关文章
- pandas操作行集锦
pandas移花接木 数据准备两表: 我们接下来要进行的操作: 增 将两表进行合并 # 把两张表合并,但是这样有问题,索引会重复的进行0-19 students = page_001.append(p ...
- pandas操作,感觉不错,复制过来的
整理pandas操作 本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filenam ...
- Python之Pandas操作csv文件dataframe
# -*- coding: utf-8 -*- # author:baoshan import pandas as pd def main(): aqi_data = pd.read_csv('chi ...
- Python Pandas操作Excel
Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...
- Pandas 操作
一.Series的创建: pd.Series([ 数据 ]) In [17]: import pandas as pd In [18]: import numpy as np In [19]: s = ...
- 整理pandas操作
本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filename):从CSV文件导入 ...
- Python openpyxl、pandas操作Excel方法简介与具体实例
本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...
- pandas操作速查表
准备工作 import numpy as np import pandas as pd 倒入文件或创建一个数据表 df = pd.DataFrame(pd.read_csv('name.csv',he ...
- Pandas操作excel
读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_co ...
随机推荐
- scrapy分布式爬虫scrapy_redis二篇
=============================================================== Scrapy-Redis分布式爬虫框架 ================ ...
- python 3.6 lxml标准库lxml的安装及etree的使用注意
据我所知,python 3.5之后的lxml模块里面不再包含etree,那么要怎么解决这个问题呢? lxml模块下的etree函数的使用问题,部分lxml模块不再支持etree方法,因此只能想办法下载 ...
- linux下设置phantomjs环境变量
1)vim /etc/profile2)在文件的最后一行,添加安装路径path语句:(注意路径是phantomjs的安装路径)export PATH=${PATH}:/usr/local/src/ph ...
- python3 os模块的常用功能及方法总结
1.os.getcwd() #显示当前工作路径 2.os.listdir('dirname') #返回指定目录下的所有文件和目录名 3.os.remove('filename') ...
- fasthttp 的 goroutine pool 实现探究
引言 fasthttp是一个非常优秀的web server框架,号称比官方的net/http快10倍以上.fasthttp用了很多黑魔法.俗话说,源码面前,了无秘密,我们今天通过源码来看一看她的gor ...
- orcl数据库命令行怎么导入dmp格式的文件
2018-05-23 1.创建空间 以system的身份登陆orcl 打开SQL Window界面,输入以下命令create tablespace SGXC(表空间的名字)datafile 'D:/S ...
- 从壹开始 [Admin] 之四 || NetCore + SignalR 实现日志消息推送
缘起 哈喽大家周一好呀,感觉好久没有写文章了,上周出差了一次,感觉还是比坐办公室好的多,平时在读一本书<时生>,感兴趣的可以看看
- 前端随笔 - JavaScript中的闭包
前阵子重新复习了一下js基础知识,第一篇博客就以分享闭包心得为开始吧. 首先,要理解闭包,就必须要了解一个概念:作用域链. 作用域链 作用域代表着可访问变量的集合,变量分为全局变量和局部变量两种,在函 ...
- 线上应用调试利器 --Arthas
在之前的文章中,我介绍了使用 Btrace 工具进行线上代码的debug (https://www.cnblogs.com/yougewe/p/10180483.html),其大致原理就是通过字节码注 ...
- 详解线程池execute和submit用法
在使用线程池时,我们都知道线程池有两种提交任务的方式,那么他们有什么区别呢? 1.execute提交的是Runnable类型的任务,而submit提交的是Callable或者Runnable类型的任务 ...