在python中使用apply或iterrows而不是groupby?
你好, 如果我有一个像上面那样的数据框架,我想在python中循环每年的数据,并为每年创建一个收入中值,我该怎么做呢 apply函数还是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
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