2017-02-19 73 views
0

我在python有一個數據集,它的結構是這樣如何實現一個選擇類似功能

Tree Species number of trunks 
------------------------------ 
Acer rubrum   1 
Quercus bicolor  1 
Quercus bicolor  1 
aabbccdd    0 

,我有一個問題,我可以實現類似的功能,

Select sum(number of trunks) 
from trees.data['Number of Trunks'] 
where x = trees.data["Tree Species"] 
group by trees.data["Tree Species"] 

在python中? x是一個數組包含五個要素:

x = array(['Acer rubrum', 'Acer saccharum', 'Acer saccharinum', 
'Quercus rubra', 'Quercus bicolor'], dtype='<U16') 

我想要做的是在映射每個X元素trees.data [「樹種」]和計算中繼數的總和,它應該返回一個數組的

array = (sum_num(Acer rubrum), sum_num(Acer saccharum), sum_num(Acer saccharinum), 
sum_num(Acer Quercus rubra), sum_num(Quercus bicolor)) 
+4

這不是什麼大熊貓爲? –

+1

你已經告訴我們你想去的地方,但不是你開始旅行的地方。問「我如何實現類似功能的選擇」就像說我怎麼去倫敦。答案是,這取決於你從哪裏開始。例如,如果您的數據位於pandas [數據框](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)中,您將需要一個完全不同的答案,如果您的數據在python使用[sqlite]訪問的數據庫中(https://docs.python.org/2/library/sqlite3.html)。 –

回答

2

你想看看Python熊貓。這將允許你這樣做

df.groupby('Tree Species')['Number of Trunks'].sum() 

請注意這裏df是無論你在你的數據幀中讀出的變量名。我建議你看熊貓和lambda函數。

1

你可以做這樣的事情:

import pandas as pd 
df = pd.DataFrame() 
tree_species = ["Acer rubrum", "Quercus bicolor", "Quercus bicolor", "aabbccdd"] 
no_of_trunks = [1,1,1,0] 
df["Tree Species"] = tree_species 
df["Number of Trunks"] = no_of_trunks 
df.groupby('Tree Species').sum() #This will create a pandas dataframe 
df.groupby('Tree Species')['Number of Trunks'].sum() #This will create a pandas series. 

您可以通過只使用字典也做同樣的事情:

tree_species = ["Acer rubrum", "Quercus bicolor", "Quercus bicolor", "aabbccdd"] 
no_of_trunks = [1,1,1,0]  
d = {} 
for key, trunk in zip(tree_species, no_of_trunks): 
    if not key in d.keys(): 
     d[key] = 0 
    d[key] += trunk   
print(d) 
+0

當給出答案時,最好給出[關於爲什麼你的答案的一些解釋](http://stackoverflow.com/help/how-to-answer)。 –

+0

感謝評論@StephenRauch – SereneWizard