pivot

How to reshape dataframe with wide_to_long or pivot?

*爱你&永不变心* 提交于 2021-02-10 11:55:26
问题 This should be fairly simple but have not been able to wrap my brain around it. I am trying to convert df1 to df2, where df1 and df2 are pandas dataframes df1 = pd.DataFrame({'site': ['1', '2'], 'sat_open': ['0900', '0900'], 'sat_close': ['1900','1900'], 'sun_open': ['1000', '1000'], 'sun_close': ['1800', '1800'], 'mon_open': ['0900', '0900'], 'mon_close': ['2100', '2100'] }) df2 = pd.DataFrame({'store': ['1', '1', '1', '2', '2','2'], 'day': ['sat', 'sun', 'mon','sat', 'sun', 'mon'], 'open':

《算法图解》笔记(3) 快速排序

ⅰ亾dé卋堺 提交于 2021-02-10 11:18:43
基线条件(base case)和递归条件(recursive case) 递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。 分而治之(divide and conquer,D&C) 问题: 假设你是农场主,有一小块土地。大小为640m × 1680m。你要将这块地均匀地分成方块,且分出的方块要尽可能大。如何将一块地均匀地分成方块,并确保分出的方块是最大的呢? 使用D&C策略!D&C算法是递归的。使用D&C解决问题的过程包括两个步骤。 找出基线条件,这种条件必须尽可能简单。(涉及数组的递归函数时,基线条件通常是数组为空或只包含一个元素。) 不断将问题分解(或者说缩小规模),直到符合基线条件。 快速排序 快速排序的工作原理。首先,从数组中选择一个元素,这个元素被称为基准值(pivot)。 接下来,找出比基准值小的元素以及比基准值大的元素。这被称为分区(partitioning)。 最后对这两个子数组进行快速排序,再合并结果,就能得到一个有序数组! 快速排序代码: def quicksort(array): if len(array) < 2 : return array else : pivot = array[0] less = [] ''' for i in array[1:]: if i <= pivot: less.append(i)

《算法图解》笔记

坚强是说给别人听的谎言 提交于 2021-02-10 10:02:38
  算法的运行时间并不以秒为单位。  算法的运行时间是其从增速的角度衡量的。  算法的运行时间用大O表示法表示 1.二分查找输入是一个有序列表。    def binary_search(list1, item):   """   二分查找的速度比简单查找快很多。   O(log n)比O(n)快。需要搜索的元素越多,前者就比后者快得越多。   """   start = 0   end = len(list1) - 1   while start <= end:     middle = int((start+ end) / 2)     guess = list1[middle]     if guess == item:       return middle     elif guess > item:       end = middle - 1     else:       start = middle+1   return None 2.选择排序    def findSmallest(arr):   smallest = arr[0]   small_index = 0   for i in range(1, len(arr)):     if arr[i] < smallest:     smallest = arr[i]     small_index = i

Python算法——《算法图解》笔记

谁说我不能喝 提交于 2021-02-10 09:50:33
算法目录 二分查找 大O表示法 选择排序 递归 快速排序,分而治之(D&C) 散列表——字典 广度优先搜索——BFS Dijkstra算法 贪婪算法 二分查找 1 # 要求list是有序表,num是要查找的数字 2 # 二分查找貌似只能查找数值表 3 def binary_search(list, num): 4 low = 0 5 high = len(list) - 1 # 因为python数组(列表)是从0开始索引的 6 7 while low <= high: 8 mid = (low + high) 9 guess = list[mid] 10 if guess == num: 11 return " found it is " + str(mid) 12 if guess > num: 13 high = mid - 1 14 else : 15 low = mid + 1 16 return " not found " 17 18 # python数组不同于matlab数组,python中间要用逗号隔开,而matlab不用 19 my_list = [1, 3, 5, 7, 9, 11, 13 ] 20 print (binary_search(my_list, 6 )) 21 print (binary_search(my_list, 9)) View Code

SQL (HSQLDB) query to create a pivot table equivalent in LibreOffice Base

这一生的挚爱 提交于 2021-02-10 07:42:37
问题 I'm working on a database in LibreOffice Base and trying to output the equivalent of a pivot table. Base uses HSQL which, I understand, doesn't support pivot, but the reports you can make with it are perfect for me so I want to stick with it. There are three columns I want to involve in my pivot: Rotation , Modality and Number . Here is an example of how the data looks at present: Rotation | Modality | Number 1 | 1 | 5 1 | 2 | 3 1 | 3 | 4 2 | 1 | 6 2 | 1 | 5 2 | 3 | 2 3 | 1 | 1 3 | 2 | 4 As

Sql的行列(纵横表)转换

老子叫甜甜 提交于 2021-02-09 06:03:58
创建表scores 一、传统的行列转换 纵表转横表 我们要转成的横表是这样子的: 既然这个表只有两列,那么可以根据姓名进行分组。先把姓名拼凑出来,后面的分数我们再想办法。 select 姓名 from scores group by 姓名 结果: 分析: 我们先拿到语文这个科目的分数。既然我们用到了group by 语句,这里肯定要用聚合函数来求分数。 而且我们只需要语文这一科的成绩,分组出来的 一共有 3列 ,分别是 语文、数学、物理 。 那么就需要判断科目来取分数。 这里符合我们需求的 case 语句就登场了。它和c#中switch-case 作用一样。 sql case 语句语法: case 字段 when 值1 then 结果 when 值2 then 结果2 ... else 默认结果 end select 姓名,SUM(case 课程 when '语文' then 分数 else 0 end) as 语文 from scores group by 姓名 结果: 既然语文的分数取到了,其他科目改变下条件就可以了。 完整的sql: select 姓名, SUM(case 课程 when '语文' then 分数 else 0 end) as 语文, SUM(case 课程 when '数学' then 分数 else 0 end) as 数学, SUM(case 课程

《Redis开发与运维》读书笔记(一)

江枫思渺然 提交于 2021-02-08 19:00:00
全局命令 查看所有的键(遍历所有key,慢查询之一) keys * 键总数(redis内部维护的计数器,并不会扫描全库) dbsize 检查键是否存在 exists key 删除键 del key1 key2... 过期设置 expire key seconds 获取数据类型 type key 数据结构与内部编码 string: int embstr raw hash: hashtable ziplist list: quicklist set: hashtable intset zset: skiplist ziplist 单线程与I/O多路复用模型 客户端到服务端模型 发送命令 执行命令 进入命令队列 返回结果 为什么快 纯内存访问(主要) 非阻塞io:依赖linux内核中的多路复用IO接口 epoll ,自编写一套处理模型(不依赖于其他事件模型)将epoll中的连接、读写、关闭都转换为事件 单线程避免了线程切换以及线程竞争的开销,单线程也简化了数据结构与算法的实现,坏处是对于慢查询非常敏感,一个慢查询将阻塞之后所有的命令 数据结构的概览 字符串 命令 命令 时间复杂度 set key value O(1) get key O(1) del key [key ...] O(k) mset key value [key value ...] O(k) mget key [key

SQL complex dynamic Pivoting

跟風遠走 提交于 2021-02-08 12:13:57
问题 Hi I am trying in SQL Server the pivoting for the following table REFID | COL1 | COL2 | Sequence 1 abc cde 1 1 lmn rst 2 1 kna asg 3 2 als zkd 2 2 zpk lad 1 I want the output as COLNAME REFID | 1 | 2 | 3 COL1 1 abc lmn kna COL2 1 cde rst asg COL1 2 zpk als null COL2 2 lad zkd null The number of columns in the original table are known but the number of rows are not known. Can any one help 回答1: In order to get the final result, you can use the PIVOT function but first I would unpivot your col1

FTR calculation using Google Query function

十年热恋 提交于 2021-02-08 11:41:18
问题 I am trying to create crosstabs pivot tables using Google Query function to calculate Employees First Time Resolution (FTR) rate based on the number of Issues received while booking Opportunities vs Total Opportunities booked . +---------+-------+---------+-----------+--------+-------+ | OppName | OppID | EmpName | MonthYear | Status | Issue | +=========+=======+=========+===========+========+=======+ | abc | 1000 | alex | 2020-Jan | active | yes | +---------+-------+---------+-----------+---

FTR calculation using Google Query function

别说谁变了你拦得住时间么 提交于 2021-02-08 11:40:04
问题 I am trying to create crosstabs pivot tables using Google Query function to calculate Employees First Time Resolution (FTR) rate based on the number of Issues received while booking Opportunities vs Total Opportunities booked . +---------+-------+---------+-----------+--------+-------+ | OppName | OppID | EmpName | MonthYear | Status | Issue | +=========+=======+=========+===========+========+=======+ | abc | 1000 | alex | 2020-Jan | active | yes | +---------+-------+---------+-----------+---