数据框中特定行的总和(Pandas)

Far*_* A. 5 python python-3.x pandas

我得到了一组以下数据:

week  A      B      C      D      E
1     243    857    393    621    194
2     644    576    534    792    207
3     946    252    453    547    436
4     560    100    864    663    949
5     712    734    308    385    303
Run Code Online (Sandbox Code Playgroud)

我被要求找到指定行/指定周数的每列的总和,然后将这些数字绘制到条形图上以比较 AE。

假设我有我需要的行(例如df.iloc[2:4,:]),接下来我应该做什么?我的假设是我需要创建一个包含每列总和的单行掩码,但我不确定如何去做。

我知道如何做最后一步(即.plot(kind='bar'),我只需要知道中间步骤是什么以获得我需要的总和。

jez*_*ael 6

您可以使用按位置选择ilocsumSeries.plot.bar

df.iloc[2:4].sum().plot.bar()
Run Code Online (Sandbox Code Playgroud)

图1

或者,如果要按索引名称(此处为周)进行选择,请使用loc

df.loc[2:4].sum().plot.bar()
Run Code Online (Sandbox Code Playgroud)

图2

差异是iloc排除最后一个位置:

print (df.loc[2:4])
        A    B    C    D    E
week                         
2     644  576  534  792  207
3     946  252  453  547  436
4     560  100  864  663  949

print (df.iloc[2:4])
        A    B    C    D    E
week                         
3     946  252  453  547  436
4     560  100  864  663  949
Run Code Online (Sandbox Code Playgroud)

如果需要还按位置过滤列:

df.iloc[2:4, :4].sum().plot.bar()  
Run Code Online (Sandbox Code Playgroud)

并按名称(周):

df.loc[2:4, list('ABCD')].sum().plot.bar()
Run Code Online (Sandbox Code Playgroud)