zoukankan      html  css  js  c++  java
  • Python pandas库 -> 和SQL查询的一些等价操作

    用pandas可以更灵活的实现SQL的很多功能

    下面是一些SQL常用语句在pandas里面的对应写法

     1 import numpy as np
     2 import pandas as pd
     3 from pandas import DataFrame,Series
     4 
     5 df1=DataFrame(np.arange(20).reshape(5,4),columns=list('abcd'),index=list('efghi'))
     6 
     7 print('我是df1:
    {}'.format(df1))
     8 print('select等价操作:
    {}'.format(df1.loc[:,['a','b']])) #用loc函数实现选择字段 也可以用赋值的方式直接改变数据
     9 print('where等价操作:
    {}'.format(df1[(df1['a']>=12) & -(df1['b']<17)])) #这里相当于where a>=12 and not b<17
    10 print('in等价操作:
    {}'.format(df1[df1['a'].isin([0,4])]))
    11 print('not in等价操作:
    {}'.format(df1[-df1['a'].isin([0,4])])) #多了一个负号,代表not
    12 print('order by等价操作:
    {}'.format(df1.sort_values('a',ascending=False))) #用sort_values实现排序,这里是降序
    13 print('as等价操作:
    {}'.format(df1.rename(columns={'a':'new_a'},inplace=False))) #rename加字典映射实现as
    14 
    15 df2=DataFrame({'x':[0,4,1,2,3,4],'y':list('python')})
    16 
    17 print('我是df2:
    {}'.format(df2))
    18 print('join等价操作:
    {}'.format(pd.merge(df1,df2,left_on='a',right_on='x',how='left'))) #可以实现各种join功能
    19 
    20 df1.loc['j',:]=[0,1,3,4] #给df1增加一行数据
    21 
    22 print('我是新的df1:
    {}'.format(df1))
    23 print('distinct等价操作:
    {}'.format(df1.drop_duplicates(subset=['a','b']))) #针对部分字段进行去重,比SQL更加灵活

    SQL where操作的逻辑运算符not and or

    分别对应pandas的 -  & 和 |

    谢谢!

  • 相关阅读:
    随笔javascript/html5裁剪初试
    javascript开发随笔1,preventDefault的必要
    uploadify/swfupload HTTP_ERROR 406、302
    Python中__init__方法注意点
    ehcache.xsd No grammar constraints (DTD or XML Schema).
    Eclipse Organize Import 批量导包
    eclipse thymeleaf 插件安装
    windows 下 查看某个端口是否已经使用
    找符号网
    杀毒软件
  • 原文地址:https://www.cnblogs.com/chendongblog/p/10950243.html
Copyright © 2011-2022 走看看