python使用pandas实现筛选功能方式

目录
  • 1 筛选出数据的指定几行数据
  • 2 筛选出数据某列为某值的所有数据记录
  • 3 模式匹配
  • 4 范围区间值筛选
  • 5 获取某一行某一列的某个值
  • 6 获取原始的numpy二维数组
  • 7 根据条件得到某行元素所在的位置
  • 8 元素位置筛选
  • 9. 删除多行/多列
  • 10 to_datetime将字符串格式转化为日期格式
  • 11 apply() 函数
  • 12 map() 函数
  • 参考
  • 总结

1 筛选出数据的指定几行数据

data=df.loc[2:5]
#这里的[2:5]表示第3行到第5行内容,[]第一个起始是0,表示数据的第一行

2 筛选出数据某列为某值的所有数据记录

data = df[(df['列名1']== ‘列值1')]
# 多条件匹配时
data_many=df[(df['列名1']== ‘列值1')&(df['列名2']==‘列值2')]
# 多值匹配时
data_many=df[df['列名1'] in [‘值1',‘值2',......]]

3 模式匹配

# 开头包含某值的模式匹配
cond=df['列名'].str.startswith('值')
$ 中间包含某值的模式匹配
cond=df['列名'].str.contains('值')

4 范围区间值筛选

# 筛选出基于两个值之间的数据:
cond=df[(df['列名1']>‘列值1')&(df['列名1']<‘列值2')]

5 获取某一行某一列的某个值

print(ridership_df.loc['05-05-11','R003'])
# 或者
print(ridership_df.iloc[4,0])

# 结果:
1608

6 获取原始的numpy二维数组

print(df.values)

7 根据条件得到某行元素所在的位置

import pandas as pd

df = pd.DataFrame({'BoolCol': [1, 2, 3, 3, 4],'attr': [22, 33, 22, 44, 66]},index=[10,20,30,40,50])
print(df)
a = df[(df.BoolCol==3)&(df.attr==22)].index.tolist()
b = df[(df.BoolCol==3)&(df.attr==22)].index[0]
c = df[(df.BoolCol==3)&(df.attr==22)].index.values
print(a)

8 元素位置筛选

print(date_frame)                # 打印完整显示的效果
print(date_frame.shape)            # 获取df的行数、列数元祖
print(date_frame.head(2))        # 前2行
print(date_frame.tail(2))        # 后2行

print(date_frame.index.tolist())        # 只获取df的索引列表
print(date_frame.columns.tolist())        # 只获取df的列名列表
print(date_frame.values.tolist())        # 只获取df的所有值的列表(二维列表)

9. 删除多行/多列

# 使用的前提是,dataframe的index和columns用的是数字,利用了drop()和range()函数。

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

# axis = 0,表示删除行; axis = 1 表示删除列。

# 想删除多行/列,用range即可,比如要删除前3行,drop(range(0,3),axis = 0(默认为零,可不写))即可。

10 to_datetime将字符串格式转化为日期格式

import datetime
import pandas as pd

dictDate = {'date': ['2019-11-01 19:30', '2019-11-30 19:00']}
df = pd.DataFrame(dictDate)
df['datetime'] = pd.to_datetime(df['date'])
df['today'] = df['datetime'].apply(lambda x: x.strftime('%Y%m%d'))
df['tomorrow'] = (df['datetime'] + datetime.timedelta(days=1)).dt.strftime('%Y%m%d')

11 apply() 函数

# pandas 的 apply() 函数可以作用于 Series 或者整个 DataFrame,功能也是自动遍历整个 Series 或者 DataFrame, 对每一个元素运行指定的函数。
def add_extra(nationality, extra):
    if nationality != "汉":
        return extra
    else:
        return 0

df['ExtraScore'] = df.Nationality.apply(add_extra, args=(5,))
df['ExtraScore'] = df.Nationality.apply(add_extra, extra=5)
df['Extra'] = df.Nationality.apply(lambda n, extra : extra if n == '汉' else 0, args=(5,))

def add_extra2(nationaltiy, **kwargs):
    return kwargs[nationaltiy]

df['Extra'] = df.Nationality.apply(add_extra2, 汉=0, 回=10, 藏=5)

12 map() 函数

import datetime
import pandas as pd
def f(x):
    x = str(x)[:8]
    if x !='n':
        gf = datetime.datetime.strptime(x, "%Y%m%d")
        x = gf.strftime("%Y-%m-%d")
    return x

def f2(x):
    if str(x) not in [' ', 'nan']:
        dd = datetime.datetime.strptime(str(x), "%Y/%m/%d")
        x = dd.strftime("%Y-%m-%d")
    return x  

def test():
    df = pd.DataFrame()
    df1 = pd.read_csv("600694_gf.csv")
    df2=pd.read_csv("600694.csv")
    df['date1'] =df2['DateTime'].map(f2)
    df['date2'] =df1['date'].map(f)
    df.to_csv('map.csv')

参考

总结

到此这篇关于python使用pandas实现筛选功能方式的文章就介绍到这了,更多相关pandas筛选功能内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • pandas数据筛选和csv操作的实现方法

    1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 42 44 46 8 48 50 52 9 54 56 58 (1)单条件筛选 df[df['a']>30] # 如果想筛选a列的取值大于30的记录,但是之显示满足条件的b,c列的值可以这么写 df[['b','c']][df['a']>30] # 使用isin函数根据特定值筛选记录.筛选a值等于30或者54的记录 df

  • pandas按若干个列的组合条件筛选数据的方法

    还是用图说话 A文件: 比如,我想筛选出"设计井别"."投产井别"."目前井别"三列数据都为11的数据,结果如下: 当然,这里的筛选条件可以根据用户需要自由调整,代码如下: # -*- coding: utf-8 -*- """ Created on Wed Nov 29 10:46:31 2017 @author: wq """ import pandas as pd #input.c

  • pandas数据处理基础之筛选指定行或者指定列的数据

    pandas主要的两个数据结构是:series(相当于一行或一列数据机构)和DataFrame(相当于多行多列的一个表格数据机构). 本文为了方便理解会与excel或者sql操作行或列来进行联想类比 1.重新索引:reindex和ix 上一篇中介绍过数据读取后默认的行索引是0,1,2,3...这样的顺序号.列索引相当于字段名(即第一行数据),这里重新索引意思就是可以将默认的索引重新修改成自己想要的样子. 1.1 Series 比方说:data=Series([4,5,6],index=['a',

  • pandas 按日期范围筛选数据的实现

    pandas 是 python 中一个功能强大的库,这里就不再复述了,简单介绍下用日期范围筛选 pandas 数据. 日期转换 用来筛选的列是 date 类型,所以这里要把要筛选的日期范围从字符串转成 date 类型 比如我的数据包含列名为 trade_date,从 20050101 - 20190926 的数据,我要筛选出 20050606 - 20071016 的数据,那么,先如下转换数据类型: s_date = datetime.datetime.strptime('20050606',

  • pandas系列之DataFrame 行列数据筛选实例

    一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. 为了简化理解,我们不妨换个思路- 现实中,为了简化对一件事物的描述,我们会选择几个特征. 例如,从(性别.身高.学历.职业.爱好..)等角度去刻画一个人,这些"角度"即为"特征". 其中,不同的行表示不同的记录:列代表特征,不同记录因各个特征之间的差异而不同. DataFrame默认索引是序号(0,1,2-),可以理解成位置索引.一般我们用id标识不同记录,

  • 使用Pandas对数据进行筛选和排序的实现

    筛选和排序是Excel中使用频率最多的功能,通过这个功能可以很方便的对数据表中的数据使用指定的条件进行筛选和计算,以获得需要的结果.在Pandas中通过.sort和.loc函数也可以实现这两 个功能..sort函数可以实现对数据表的排序操作,.loc函数可以实现对数据表的筛选操作.本篇文章将介绍如果通过Pandas的这两个函数完成Excel中的筛选和排序操作. 首选导入需要使用的Pandas库和numpy库,读取并创建数据表,将数据表命名为lc. import pandas as pd impo

  • Pandas 如何筛选包含特定字符的列

    问题提出: 比如有一个三百多列的数据集,想要快速找到包含xxx的列,这里有三种方法 if判断+列表解析式 [x for x in df.columns if 'xxx' in x] str.contain()+列表解析式 [x for x in df.columns[df.columns.str.contain('xxx')]] filter函数 df.filter(like='xxx').columns 关于filter,这里可以多说一句,除了like匹配之外,还支持正则表达式匹配,参数为re

  • 使用pandas实现筛选出指定列值所对应的行

    在pandas中怎么样实现类似mysql查找语句的功能: select * from table where column_name = some_value; pandas中获取数据的有以下几种方法: 布尔索引 位置索引 标签索引 使用API 假设数据如下: import pandas as pd import numpy as np df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(), 'B': 'one one

  • Python Pandas条件筛选功能

    目录 一.准备数据 二.以>,<,==,>=,<=来进行选择 三..isin() 四..str.contains()实现 一.准备数据 import pandas as pd   data = pd.read_excel(r'销售数据.xlsx') print(data) 数据如下: 二.以>,<,==,>=,<=来进行选择 “等于”一定是用‘==’,如果用‘=’就不是判断大小了: 例如:筛选销售员是马姐的数据 df = data[data['销售员'] =

  • pandas按条件筛选数据的实现

    pandas中对DataFrame筛选数据的方法有很多的,以后会后续进行补充,这里只整理遇到错误的情况. 1.使用布尔型DataFrame对数据进行筛选 使用一个条件对数据进行筛选,代码类似如下: num_red=flags[flags['red']==1] 使用多个条件对数据进行筛选,代码类似如下: stripes_or_bars=flags[(flags['stripes']>=1) | (flags['bars']>=1)] 常见的错误代码如下: 代码一: stripes_or_bars

随机推荐