Python 在多列上使用Sum()和Groupby
尽管代码可以工作,并为我带来所需的结果,但我相信有一种更简单的方法Python 在多列上使用Sum()和Groupby,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,尽管代码可以工作,并为我带来所需的结果,但我相信有一种更简单的方法 dfg = df.groupby('County')['Total N, 1985 (Kg.)' , 'Total N, 2007 (Kg.)' ,'Total N, 2009 (Kg.)','Total N, 2010 (Kg.)','Total N, 2011 (Kg.)','Total N, 2012 (Kg.)','Total N, 2013 (Kg.)','Total N, 2014 (Kg.)','Total N
dfg = df.groupby('County')['Total N, 1985 (Kg.)' , 'Total N, 2007 (Kg.)' ,'Total N, 2009 (Kg.)','Total
N, 2010 (Kg.)','Total N, 2011 (Kg.)','Total N, 2012 (Kg.)','Total N, 2013 (Kg.)','Total N, 2014
(Kg.)','Total N, 2015 (Kg.)','Total N, 2016 (Kg.)','Total N, 2017 (Kg.)','Total N target, 2025
(Kg.)'].agg('sum')
从“2011年总氮(千克)”到“2025年总氮目标(千克)”的列可以使用loc(可能)进行切片,但是,我在这里停留了几个小时
(数据集中的列号从6到12)这可以通过分组和聚合后通过loc或其他方式限制数据来实现。样本数据取自plotly官方网站
import plotly.express as px
import pandas as pd
df = px.data.gapminder()
df['year'] = df['year'].apply(lambda x:str(x)+'y')
df = df.pivot(index=['continent','country'], columns='year', values='gdpPercap')
df.columns
Index(['1952y', '1957y', '1962y', '1967y', '1972y', '1977y', '1982y', '1987y',
'1992y', '1997y', '2002y', '2007y'],
dtype='object', name='year')
dfg = df.groupby('continent').sum().loc[:,slice('1997y','2007y')]
dfg
year 1997y 2002y 2007y
continent
Africa 123695.496865 135168.028262 160629.695446
Americas 222232.521564 232191.927683 275075.790634
Asia 324525.078743 335744.983087 411609.886714
Europe 572303.454048 651351.972673 751634.449078
Oceania 48048.350340 53877.556080 59620.376550
我相信这就是您所要寻找的。请分享预期输出的样本数据,以及您的代码。嗨,我将向您打印列名:索引(['Land-River Segment'、'FIPS'、'County'、'支流流域'、'大流域'、'源区'、'Total N,1985(Kg.)、'Total N,2007(Kg.)、'Total N,2009(Kg.)“,”全氮,2010年(千克),”全氮,2011年(千克),”全氮,2012年(千克),”全氮,2013年(千克),“全氮,2014年(千克),”全氮,2015年(千克),”全氮,2016年(千克),“全氮,2017年(千克),”全氮目标,2025年(千克),”dtype='object')我要做的是求和()在基于县名列的每年列中,数据集在这里,如果您可以下载并检查它,请我可以这样列出它们,但它不可读,必须有一种更聪明的方法来做考虑编辑您的问题Tariq
df.iloc[:, 6:13].groupby('County').sum()