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

2024-09-28 20:58:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我对熊猫越来越熟悉了,我想用几个简单的例子来学习它的逻辑。你知道吗

假设我有以下panda 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'] 会回来的

[2013,2014,2014,2014]

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

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

它不起作用。你知道吗

问题1.

例如,如何按年份聚合(求和/平均)values列和dico列。一、 例如,不添加不同年份/dico组合,但基本上从列表中删除mybool。你知道吗

也就是说,经过聚合(本例为平均值)后,我应该得到:

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

如果我尝试groupby函数,它似乎会输出一些奇怪的新数据帧结构,其中包含bool,以及所有可能的years/dico组合-我的目标是得到上面显示的更简单的新切片和更小的数据帧。你知道吗

问题2。如何按条件筛选?你知道吗

也就是说,我想过滤掉所有为假的bool列。 它会返回:

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

我试过熊猫教程,但我还是得到一些奇怪的行为,所以直接问似乎是一个更好的主意。你知道吗

谢谢!你知道吗


Tags: 数据truedataframe列表indexyeardico例子
1条回答
网友
1楼 · 发布于 2024-09-28 20:58:57

列表中系列的值:

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

loc允许您通过索引标签来子集日期框:

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

Group by允许在列上进行聚合:

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

按列值筛选:

df[df['mybool']==True]

相关问题 更多 >