• 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的 -  & 和 |

    谢谢!

  • 相关阅读:
    vs code配置
    openssl
    右值目前
    elselect组件的问题
    HCIP记录
    ES的写入与查询的工作原理
    Limit offset,size 与limit size性能比较
    Es搜索引擎在数据量很大的情况下,如何提高查询效率?
    《一页纸学习法》豆瓣:7.5
    深拷贝浅拷贝区别
  • 原文地址:https://www.cnblogs.com/chendongblog/p/10950243.html
Copyright © 2020-2023  润新知