这应该很简单。我想要的是根据函数的结果进行分组的能力,就像在SQL中一样,您可以按表达式进行分组:
SELECT substr(name, 1) as letter, COUNT(*) as count
FROM table
GROUP BY substr(name, 1)
这将计算以字母表中的每个字母开头的name列的行数。
我希望在python中也这样做,所以我假设我可以将一个函数传递给groupby。但是,这只会将索引列(第一列)传递给函数,例如0、1或2。
import pandas
# Return the first letter
def first_letter(row):
在pandas中使用groupby和并行应用过滤器的最有效方法是什么?
基本上,我在SQL中请求的等价物是
select *
...
group by col_name
having condition
我认为有许多用例,从条件均值,总和,条件概率,等等,这将使这样的命令非常强大。
我需要一个非常好的性能,所以理想情况下,这样的命令不会是在python中完成的几个分层操作的结果。
在Pandas中,如何在同一个数据集中进行多步/顺序聚合?好像每个步骤都是下一个步骤的“子查询”。
在SQL中,我可以这样想:
SELECT x.A, COUNT(x.B) as B_COUNT, SUM(x.C_SUM) as C_SUM
FROM (
SELECT df.A, df.B, SUM(df.C) as C_SUM
FROM df
GROUP BY df.A, df.B
) x
GROUP BY x.A
在Python3.4和Pandas0.19.2中工作,我有这样一个数据框架:
import pandas
import numpy
numpy.rand
对于我的作业,我应该使用matplotlib在地图上绘制20个飓风的轨迹。然而,当我运行我的代码时,我得到了错误:AssertionError:Grouper and axis must be the same length
下面是我的代码:
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from PIL import *
fig = plt.figure(figsize=(12,12))
ax = fig.add_axes([0.1,0.1,0.8,0
我正在尝试编写一个python脚本,它将条目组合到csv文件中。
a, 1, A
a, 2, B
b, 3, C
b, 4, D
至
a, 1, A, 2, B
b, 3, C, 4, D
下图显示了我的csv文件的更完整的图片。
我试过使用csv和pandas库,但是我迷路了。我是个编程新手,现在对此还不太了解。
编辑:每个字母不一定是2行,可能会有所不同,如果是这样的话,每个字母都会添加到行上,例如,它可能是
a、1、A、2、B、3、C、4、D
b、5、E、6、F
c、7、G、8、H、9、J、10、K、11、L、12、M-
我有99个人的年收入数据:
import pandas, random
incomes = pandas.DataFrame({'income':[round(random.triangular(20,80,200),0) for i in range(99)]})
如何:
将他们分成3个分位数,“贫穷”、“中等”、“富有”,每个分位数为的平均收入。
抱歉,听起来像个新手的问题。我在学习。谢谢!
这是我使用Python的早期尝试。我正在从雅虎获得股票数据,但我可以看到股票代码,日期列标题低于高,低,开盘收盘价。
我肯定漏掉了什么。那是什么?
import pandas as pd
import numpy as np
import datetime
import pandas_datareader as pdr
py.init_notebook_mode(connected=True)
# we download the stock prices for each ticker and then we do a mapping between data and name of t
我正在处理表示向量(幅度和方向)的时序数据。我想要我的数据,并使用describe函数作为how参数。
但是,describe方法使用标准平均值,我想使用一个特殊的函数来平均方向。因此,我在pandas.Series.describe()实现的基础上实现了我自己的describe方法
def directionAverage(x):
result = np.arctan2(np.mean(np.sin(x)), np.mean(np.cos(x)))
if result < 0:
result += 2*np.pi
return result
d
给定一个开始时间为新时间段(新工作班次)的数据帧,将截至下一时间段(工作班次)的所有销售额相加。 import pandas as pd
df_checkpoints = pd.DataFrame({'time':[1,5,10], 'shift':['Adam','Ben','Carl']})
df_sales = pd.DataFrame({'time':[2,6,7,9,15], 'soldCount':[1,2,3,4,5]})
# This is the wanted
下面的代码使用python 2.x而不是python 3.x执行。
df = pd.DataFrame(data)
gb = df.groupby(['style'])
for a, b in gb:
#any command, iteration fails
错误是:
Traceback (most recent call last):
File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/algorithms.py", line 143, in factorize
so
我有一个完整的外部联接查询,从中提取数据(我使用EF6进行映射):
var query =
from entry in left.Union(right).AsEnumerable()
select new
{
...
} into e
group e by e.Date.Year into year
select new
{
Year = year