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操作的更多相关文章

  1. pandas操作行集锦

    pandas移花接木 数据准备两表: 我们接下来要进行的操作: 增 将两表进行合并 # 把两张表合并,但是这样有问题,索引会重复的进行0-19 students = page_001.append(p ...

  2. pandas操作,感觉不错,复制过来的

    整理pandas操作 本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filenam ...

  3. Python之Pandas操作csv文件dataframe

    # -*- coding: utf-8 -*- # author:baoshan import pandas as pd def main(): aqi_data = pd.read_csv('chi ...

  4. Python Pandas操作Excel

    Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...

  5. Pandas 操作

    一.Series的创建: pd.Series([ 数据 ]) In [17]: import pandas as pd In [18]: import numpy as np In [19]: s = ...

  6. 整理pandas操作

    本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filename):从CSV文件导入 ...

  7. Python openpyxl、pandas操作Excel方法简介与具体实例

    本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...

  8. pandas操作速查表

    准备工作 import numpy as np import pandas as pd 倒入文件或创建一个数据表 df = pd.DataFrame(pd.read_csv('name.csv',he ...

  9. Pandas操作excel

    读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_co ...

随机推荐

  1. log4j的配置与使用

    配置log4j的步骤如下: 1.导入jar包 如log4j-1.2.15.jar 2.在src下添加log4j.properties 使用时把下面内容中的注释去掉: //日志级别及位置 log4j.r ...

  2. fastdfs group通过添加硬盘扩容

    通过给group的机器添加硬盘的方式,实现某个group的扩容. fastdfs在一台服务器支持多个store_path,每个store_path指向一个存储路径.url "M00/3F/E ...

  3. TestNG教程网站

    比较简明的一些TestNG教程网站 : https://www.jianshu.com/p/74816a200221 http://www.yiibai.com/testng/parameterize ...

  4. golang使用Nsq

    为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯.一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golan ...

  5. 一个C++程序中有多个cin输入的情况

    在很多C++程序中,我们都会有几次输入的操作.这种情况下,会遇到只有第一个cin语句被执行了,而后面的cin都没有执行.这是因为cin所输入的数据都放在cin缓冲区中,当第一次使用cin后,缓冲区中已 ...

  6. bzoj 4501 旅行

    01分数规划+最大权闭合子图 倒拓扑序处理每个节点 $$f[x]=\frac{\sum{f[v]}}{n}+1$$ 二分答案$val$ 只需要判断是否存在$\sum{f[v]}+1-val>0$ ...

  7. BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集

    BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集 Description     农夫约翰有N(2≤N≤40000)个农场,标号1到N,M( ...

  8. node.js与ThreadLocal

    ThreadLocal变量的说法来自于Java,这是在多线程模型下出现并发问题的一种解决方案. ThreadLocal变量作为线程内的局部变量,在多线程下可以保持独立,它存在于 线程的生命周期内,可以 ...

  9. this指向和apply,call,bind三者的区别

    一.前言 this指向,apply,call,bind的区别是一个经典的面试问题,同时在项目中会经常使用到的原生的js方法.同时也是ES5中的众多坑的一个.ES6中可能会极大的避免了this产生的错误 ...

  10. C#ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决方法

    在使用ComboBox控件时,遇到了重新绑定赋值出问题的情况.正常情况下,对于数据重新赋值的或者绑定数据源的时候,为了防止数据出现问题,都会先清空原来数据,所以就这样写了,但是没有相当恰恰这样写就出现 ...