2015-02-11 49 views
1

我對熊貓很熟悉,我想用幾個簡單的例子來學習邏輯。有關切片和聚合表的基本熊貓問題

讓我們說我有以下的熊貓數據框對象:

import pandas as pd 
d = {'year':pd.Series([2014,2014,2014,2014], index=['a','b','c','d']), 
    'dico':pd.Series(['A','A','A','B'], index=['a','b','c','d']), 
    'mybool':pd.Series([True,False,True,True], index=['a','b','c','d']), 
    'values':pd.Series([10.1,1.2,9.5,4.2], index=['a','b','c','d'])} 
df = pd.DataFrame(d) 

基本問題。 如何將列作爲列表。 即,d['year'] 將返回

[2013,2014,2014,2014] 

問題0 如何採取行 'A' 和 'B' 和列 '年份' 和 '價值' 作爲一種新的數據幀? 如果我嘗試:

d[['a','b'],['year','values']] 

它不起作用。

問題1:

我將如何聚集(總和/平均)年度值列,列迪科,例如。即,不會添加不同年份/ dico組合,但基本上mybool將從列表中刪除。

即,聚集(這種情況下平均值)後,我應該得到:

tipo values    year 
A  10.1    2013 
A  (9.5+1.2)/2   2014 
B  4.2     2014 

如果我嘗試GROUPBY功能似乎輸出,布爾一些奇怪的新的數據幀結構,它和所有可能的年/迪科組合 - 我的目標是讓我有更簡單的新切片和更小的數據框。

問題2。我如何過濾條件?

即,我想過濾出所有爲False的布爾列。 它會返回:

tipo values    year mybool 
A  10.1    2013 True 
A  9.5     2014 True 
B  4.2     2014 True 

我已經試過熊貓教程,但我仍然得到一些奇怪的行爲,因此要求直接似乎是一個更好的主意。

謝謝!從系列

回答

1

值的列表:

df['year'].values #returns an array 

loc,您可以通過索引標識子集a dateframe:

df.loc[['a','b'],['year','values']] 

集團通過允許您彙總了列:

df.groupby(['year','dico'],as_index=False).mean() #don't have 2013 in your df 

按列值過濾:

df[df['mybool']==True] 
+0

嗨JAB,但是,如果我做tt = df.groupby(['year','dico'])mean(),然後如果我做tt ['year']似乎不起作用因爲tt不再是具有這些列的數據框......無論如何訪問該信息仍然是? – Dnaiel 2015-02-12 00:36:52

+1

yes-設置'as_index = False' in'groupby' – JAB 2015-02-12 00:43:45

+0

太棒了,非常感謝JAB – Dnaiel 2015-02-12 00:47:41