在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
以前,我可以将excel文件作为df文件读取到python中,其中包含一个名为date的列,格式类似于2011-02-01,我希望获得每个日期的季度,并按季度的数据分组。我已经向df中添加了一个名为quarter的列,但是当我尝试
df.groupby('quarter')
它向我展示了
No axis named quarter for object type class'pandas.core.frame.DataFrame'
有没有可能做我想做的事情?或者有其他方法可以做到这一点吗?
我有一个数据集,如下所示:
Value Type X_sq
-1.975767 Weather
-0.540979 Fruits
-2.359127 Fruits
-2.815604 Corona
-0.929755 Weather
我想迭代每一行,并计算上面每一行的平方值之和(只有在Type匹配的情况下)。我想把这个值放在X.sq列中。
例如,在第一行,上面什么都没有。所以只有(-1.975767 x -1.975767)。在第二行,上面没有水果行,所以它只是-0.540979 x -0.540979。但是,在
我正在处理表示向量(幅度和方向)的时序数据。我想要我的数据,并使用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
在Pandas中,我很难将转换应用到2列群中。我尝试过许多引用类似用例的东西。
我希望按日期和用户进行groupby,并在标志列上进行转换,方法是如果'nan‘那么其他值为1。
user date Flag
0 ron 12/21/2019 1
1 ron 12/22/2019 2
2 april 12/21/2016 nan
3 april 12/23/2016 1
4 andy 12/21/2016 nan
下面是我已经设置的内容,这在逻辑上对我来说是有意义的
对于我的作业,我应该使用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 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
这里我读了一个文件"userdata.xlsx":
ID Debt Email Age User
1 7.5 john@email.com 16 John
2 15 john@email.com 15 John
3 22 john@email.com 15 John
4 30 david@email.com 22 David
5 33 david@email.com 22 David
6 51 fred@email.com 61 Fred
7 11 fred@email.com 25 Fred
8
我试着在pandas中按列值分组,但是我没有得到。 示例: Col1 Col2 Col3
A 1 2
B 5 6
A 3 4
C 7 8
A 11 12
B 9 10
-----
result needed grouping by Col1
Col1 Col2 Col3
A 1,3,11 2,4,12
B 5,9 6,10
c 7
在pandas中使用groupby和并行应用过滤器的最有效方法是什么?
基本上,我在SQL中请求的等价物是
select *
...
group by col_name
having condition
我认为有许多用例,从条件均值,总和,条件概率,等等,这将使这样的命令非常强大。
我需要一个非常好的性能,所以理想情况下,这样的命令不会是在python中完成的几个分层操作的结果。
u'가' u'나'
0
1
...
A B
0
1
...
上面有两只熊猫,分别叫“左”和“右”。我试着像下面的代码一样合并。
result = pandas.merge(left, right, how='left', left_on=[u'가'], right_on=['A'])
但不幸的是,出现了错误。熊猫合并left(right)_on=key功能似乎无法识别unicode列名。
File "?.py", line ?, in
下面的代码是我所拥有的,但它抛出了一段代码,说明没有要聚合的数值类型。代码:
import pandas
import numpy as np
link = 'https://raw.githubusercontent.com/dvanderelst-python-class/python-class/spring2021/assignment_data/young_people_survey.csv'
data = pandas.read_csv(link,index_col=0)
data.groupby(['Age','Smoking']