2015-11-13 59 views
1

我有一個數據框A,我想總結其行索引值大於或等於10的行。 如果這是不可能的,我可以在代碼中生活2-3行。如何在Python中總結某個數據框的某一行

import pandas as pd 
import numpy as np 
A = """ 
     Tier   Oct Nov Dec 
    0 up to 2M  4  5  10 
    1 5M   3  2  7 
    2 10M   6  0  2 
    3 15M   1  3  5 
    """ 
tenplus = pd.Series(A(axis=0),index=A.columns[1:]) 

但是這個總和在整個表上。我可以做的一件事是從第2-3行構建另一個數據框,然後結束它們,但我更願意學習最佳實踐!

謝謝!

+0

你的數據是一個可怕的格式,使'層'數值不知何故 – reptilicus

回答

1

您可以正常使用切片索引來選擇要求和行:

print(df) 
#  Tier Oct Nov Dec 
# 0 up to 2M 4 5 10 
# 1  5M 3 2 7 
# 2  10M 6 0 2 
# 3  15M 1 3 5 

# select the last two rows 
print(df[2:4]) 
# Tier Oct Nov Dec 
# 2 10M 6 0 2 
# 3 15M 1 3 5 

# sum over them 
print(df[2:4].sum()) 
# Tier 10M15M 
# Oct   7 
# Nov   3 
# Dec   7 
# dtype: object 

爲y你可以看到,總結Tier列給出了一個毫無意義的結果,因爲「求和」字符串只是連接它們。它會更有意義,只有最後三列求和:

# select the last two rows and the last 3 columns 
print(df.loc[2:4, ['Oct', 'Nov', 'Dec']]) 
# Oct Nov Dec 
# 2 6 0 2 
# 3 1 3 5 

# sum over them 
print(df.loc[2:4, ['Oct', 'Nov', 'Dec']].sum()) 
# Oct 7 
# Nov 3 
# Dec 7 
# dtype: int64 

# alternatively, use df.iloc[2:4, 1:] to select by column index rather than name 

你可以閱讀更多有關索引在大熊貓in the documentation here是如何工作的。

0

總和具有軸線的說法,通過軸= 1總結以上行:

In [11]: df 
Out[11]: 
     Tier Oct Nov Dec 
0 up to 2M 4 5 10 
1  5M 3 2 7 
2  10M 6 0 2 
3  15M 1 3 5 

In [12]: df.sum(axis=1) 
Out[12]: 
0 19 
1 12 
2  8 
3  9 
dtype: int64 

注意:這是丟棄非數字列,可以明確地求和前過濾這些出:

In [13]: df[['Oct', 'Nov', 'Dec']].sum(axis=1) 
Out[13]: 
0 19 
1 12 
2  8 
3  9 
dtype: int64 
+0

謝謝,但我想總結行而不是列。我已經添加了「軸= 0」的參數,但事情是我只想要第2行和第3行的總和。 – Ana

+0

@Ana這就是上述總結行......我無法理解你的其餘部分'再說一遍。 –

相關問題