与切片和聚合表相关的基本熊猫问题

basic panda questions related to slicing and aggregating tables

我正在熟悉 Pandas,我想通过几个简单的例子来学习其中的逻辑。

假设我有以下熊猫 DataFrame 对象:

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'] 会 return

[2013,2014,2014,2014]

问题 0 如何将行 'a' 和 'b' 以及列 'year' 和 'values' 作为新的数据帧? 如果我尝试:

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

没用。

问题一

我将如何聚合 (sum/average) 值列,例如按年份和 dico 列。即,不会添加不同的 years/dico 组合,但基本上 mybool 将从列表中删除。

即,聚合后(本例平均值)我应该得到:

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

如果我尝试使用 groupby 函数,它似乎会输出一些奇怪的新 DataFrame 结构,其中包含 bool,以及所有可能的 years/dico 组合 - 我的 objective 宁愿有更简单的新切片和我在上面显示的较小的数据框。

问题 2。如何按条件过滤?

即,我想过滤掉所有为 False 的 bool 列。 它会 return:

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

我试过 panda 教程,但我仍然遇到一些奇怪的行为,所以直接询问似乎是个更好的主意。

谢谢!

列表中系列的值:

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

loc 允许您按索引标签对日期框进行子集化:

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]