Oracle的表服务器提供内置函数TRUNC(timestamp,'DY').此函数将上一个星期日的任何时间戳转换为午夜.在MySQL中执行此操作的最佳方法是什么?
Oracle还提供TRUNC(timestamp,'MM')将时间戳转换为发生月份的第一天的午夜.在MySQL中,这个很简单:
TIMESTAMP(DATE_FORMAT(timestamp, '%Y-%m-01'))
Run Code Online (Sandbox Code Playgroud)
但这个DATE_FORMAT技巧几周不会奏效.我知道这个WEEK(timestamp)功能,但我真的不想要一年内的周数; 这个东西是多年的工作.
在Pandas数据帧上进行groupby的最佳方法是什么,但从该组中排除某些列?例如,我有以下数据帧:
Code Country Item_Code Item Ele_Code Unit Y1961 Y1962 Y1963
2 Afghanistan 15 Wheat 5312 Ha 10 20 30
2 Afghanistan 25 Maize 5312 Ha 10 20 30
4 Angola 15 Wheat 7312 Ha 30 40 50
4 Angola 25 Maize 7312 Ha 30 40 50
Run Code Online (Sandbox Code Playgroud)
我想通过列Country和Item_Code进行分组,并且只计算落在Y1961,Y1962和Y1963列下的行的总和.生成的数据框应如下所示:
Code Country Item_Code Item Ele_Code Unit Y1961 Y1962 Y1963
2 Afghanistan 15 C3 5312 Ha 20 40 60
4 Angola 25 C4 7312 Ha 60 80 100
Run Code Online (Sandbox Code Playgroud)
现在我这样做:
df.groupby('Country').sum()
Run Code Online (Sandbox Code Playgroud)
但是,这也会将Item_Code列中的值相加.有什么方法可以指定要在sum()操作中包含哪些列以及要排除哪些列?
我一直有麻烦关节之间的差异ILookup<TKey, TVal>和IGrouping<TKey, TVal>,并很好奇,如果我理解正确了.LINQ通过生成IGrouping项目序列来复杂化问题,同时也为我提供了ToLookup扩展方法.所以在我仔细观察之前感觉它们是一样的.
var q1 =
from n in N
group n by n.MyKey into g
select g;
// q1 is IEnumerable<IGrouping<TKey, TVal>>
Run Code Online (Sandbox Code Playgroud)
这相当于:
var q2 = N.GroupBy(n => n.MyKey, n => n);
// q2 is IEnumerable<IGrouping<TKey, TVal>>
Run Code Online (Sandbox Code Playgroud)
这看起来很像:
var q3 = N.ToLookup(n => n.MyKey, n => n);
// q3 is ILookup<TKey, TVal>
Run Code Online (Sandbox Code Playgroud)
我在以下类比中是否正确?
IGrouping<TKey, TVal>是一个单独的组(即键控序列),类似于KeyValuePair<TKey, TVal>值实际上是一系列元素(而不是单个元素)IEnumerable<IGrouping<TKey, TVal>>是那些序列(类似于迭代时得到的结果)IDictionary<TKey, TVal>ILookup<TKey, TVal>更像是一个IDictionary<TKey, …我有一系列具有属性重量,体积和所有者的盒子.
我想使用LINQ获取盒子信息的汇总列表(按所有者)
例如
**Owner, Boxes, Total Weight, Total Volume**
Jim, 5, 1430.00, 3.65
George, 2, 37.50, 1.22
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何使用Lambda表达式执行此操作吗?
如果我有两个列,一个具有非常高的基数,另一个具有非常低的基数(唯一的值#),那么我按哪个顺序分组?
这是一个例子:
select
dimensionName,
dimensionCategory,
sum(someFact)
from SomeFact f
join SomeDim d on f.dimensionKey = d.dimensionKey
group by
d.dimensionName, -- large number of unique values
d.dimensionCategory -- small number of unique values
Run Code Online (Sandbox Code Playgroud)
是否有重要的情况?
为了按多列分组,示例2需要进行哪些更正
例1
var query = from cm in cust
group cm by new { cm.Customer, cm.OrderDate } into cms
select
new
{ Key1 = cms.Key.Customer,Key2=cms.Key.OrderDate,Count=cms.Count() };
Run Code Online (Sandbox Code Playgroud)
例2(不正确)
var qry =
cust.GroupBy(p => p.Customer, q => q.OrderDate, (k1, k2, group) =>
new { Key1 = k1, Key2 = k2, Count = group.Count() });
Run Code Online (Sandbox Code Playgroud) 我想B在我的下面的SQL中显示该列,但是当我将它添加到查询时它会给我以下错误:
列T2.B'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
我的代码:
SELECT A, COUNT(B) as T1, B
FROM T2
WHERE ID=1
GROUP BY A
Run Code Online (Sandbox Code Playgroud) 我正在HSQLDB服务器上执行一些测试,其中包含一个包含500 000个条目的表.该表没有索引.有5000个不同的业务键.我需要一份清单.当然,我开始DISTINCT查询:
SELECT DISTINCT business_key FROM memory WHERE
concept <> 'case' or
attrib <> 'status' or
value <> 'closed'
Run Code Online (Sandbox Code Playgroud)
大约需要90秒!
然后我尝试使用GROUP BY:
SELECT business_key FROM memory WHERE
concept <> 'case' or
attrib <> 'status' or
value <> 'closed'
GROUP BY business_key
Run Code Online (Sandbox Code Playgroud)
它需要1秒!!!
试图找出我运行的差异,EXLAIN PLAN FOR但它似乎为两个查询提供相同的信息.
EXLAIN PLAN FOR DISTINCT ...
isAggregated=[false]
columns=[
COLUMN: PUBLIC.MEMORY.BUSINESS_KEY
]
[range variable 1
join type=INNER
table=MEMORY
alias=M
access=FULL SCAN
condition = [ index=SYS_IDX_SYS_PK_10057_10058
other condition=[
OR arg_left=[ …Run Code Online (Sandbox Code Playgroud) 我在使用Pandas的groupby功能时遇到了麻烦.我已经阅读了文档,但是我无法弄清楚如何将聚合函数应用于多个列并为这些列提供自定义名称.
这非常接近,但返回的数据结构具有嵌套的列标题:
data.groupby("Country").agg(
{"column1": {"foo": sum()}, "column2": {"mean": np.mean, "std": np.std}})
Run Code Online (Sandbox Code Playgroud)
(即.我想取column2的mean和std,但将这些列作为"mean"和"std"返回)
我错过了什么?
在pandas中有一个简单的方法来调用groupby一系列的值增量吗?例如,给定下面的示例,我可以B使用0.155增量对列进行bin和group ,以便例如列B中的前几个组被分成两个范围之间的范围.groupby
import numpy as np
import pandas as pd
df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)})
A B
0 0.383493 0.250785
1 0.572949 0.139555
2 0.652391 0.401983
3 0.214145 0.696935
4 0.848551 0.516692
Run Code Online (Sandbox Code Playgroud)
或者,我可以先按这些增量将数据分类到新列中,然后用于A确定可能适用于列的任何相关统计数据groupby?