Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用apply或iterrows而不是groupby?_Python - Fatal编程技术网

在python中使用apply或iterrows而不是groupby?

在python中使用apply或iterrows而不是groupby?,python,Python,你好, 如果我有一个像上面那样的数据框架,我想在python中循环每年的数据,并为每年创建一个收入中值,我该怎么做呢 apply函数还是groupby函数最好 我可以让它工作: df = pd.DataFrame([[15000, 2015], [20000,2015], [25000,2015], [15000, 2016], [20000,2016], [25000,2016], [10500, 2017], [54000,2017], [34000,2017]], columns=['in

你好,

如果我有一个像上面那样的数据框架,我想在python中循环每年的数据,并为每年创建一个收入中值,我该怎么做呢

apply函数还是groupby函数最好

我可以让它工作:

df = pd.DataFrame([[15000, 2015], [20000,2015], [25000,2015], [15000, 2016], [20000,2016], [25000,2016], [10500, 2017], [54000,2017], [34000,2017]], columns=['income', 'year'])


income          year
15000           2015
20000           2015
25000           2015
19000           2016
36000           2016
20000           2016
10500           2017
54000           2017
34000           2017
我想知道是否有另一种选择,比如apply或iterrows

非常感谢。

是进行某些聚合的最佳方式

这是正确的使用方法:

df.groupby(df.year)[['income']].median()
OP评论后:

In [85]: df.groupby('year', as_index=False)['income'].median()
Out[85]: 
   year  income
0  2015   20000
1  2016   20000
2  2017   34000
然后您可以查询上面的
dict
d以获得某一年的平均值,如下所示:

In [239]: res = df.groupby('year', as_index=False)['income'].median()
In [259]: d = res.set_index('year').to_dict()['income']

groupby
绝对是实现这一点以及大多数聚合任务的方法
apply
用于行操作,通常避免使用前面两种方法中的一种。谢谢:)。接下来,我将如何将输出分配给每个案例的新变量?那么2017年的每个案例都有2017年的中值,等等?非常感谢。谢谢:)。接下来,我将如何将输出分配给每个案例的新变量?那么2017年的每个案例都有2017年的中值,等等?非常感谢,谢谢你。这会将输出作为数据帧的一部分吗?理想情况下,我希望将其用作数据帧上的变量。干杯。不,这会给你作为字典的输出。您不需要单独的变量。你可以用字典。“如果你的答案有帮助,请考虑投票。”
In [268]: d.get(2015)
Out[268]: 20000

In [269]: d.get(2016) 
Out[269]: 20000

In [270]: d.get(2017) 
Out[270]: 34000