若要用单个列过滤数据文件(DF),如果我们考虑有男性和女性的数据,我们可以:
males = df[df[Gender]=='Male']
问题1——但如果数据跨越多年,而我只想看到2014年的男性会怎样?
在其他语言中,我可能会这样做:
if A = "Male" and if B = "2014" then
(除非我想这样做并在新的dataframe对象中获取原始dataframe的子集)
问题2。我如何在一个循环中实现这一点,并为每个独特的年份和性别集(即:2013年男性、2013年女性、2014年男性和2014年女性)创建一个数据框对象
for y in year:
for g in gender:
df = .....
从熊猫0.13开始,这是最高效的方式。
df.query('Gender=="Male" & Year=="2014" ')
对于要用作筛选器且依赖于多个列的更通用的布尔函数,可以使用:
df = df[df[['col_1','col_2']].apply(lambda x: f(*x), axis=1)]
其中f是一个函数,应用于col_1和col_2的每对元素(x1,x2),并根据您想要的任何条件(x1,x2)返回True或False。
使用
males = df[(df[Gender]=='Male') & (df[Year]==2014)]
要使用for循环将数据帧存储在dict中,请执行以下操作:
from collections import defaultdict
dic={}
for g in ['male', 'female']:
dic[g]=defaultdict(dict)
for y in [2013, 2014]:
dic[g][y]=df[(df[Gender]==g) & (df[Year]==y)] #store the DataFrames to a dict of dict
一个演示为您的
getDF
:
def getDF(dic, gender, year):
return dic[gender][year]
print genDF(dic, 'male', 2014)
有一个数据帧: 以及熊猫系列: 如何创建包含c1在list1中的行的新数据帧。 输出:
我想通过作为字符串的属性名筛选类的集合。假设我有一个名为Person的类,我有它的一个集合,或者是IEnumerable或者是List,我想过滤这个集合,但是我不知道确切的过滤器,我的意思是我不能使用: 让我举一个例子。
我试图基于单个条件,根据多列中的值过滤数据帧,但保留我根本不想应用过滤器的其他列。 我回顾了这些答案,第三个是最接近的,但仍然没有运气: 如何按多列筛选数据帧 筛选多个列 Python熊猫-如何按一个值筛选多个列 设置: 电流输出: 期望输出: 我试过: 以及许多其他变体(,,
我在Python中使用一个视频游戏的熊猫DataFrame,每个游戏都有一种类型。我正在尝试删除任何在DataFrame中出现次数少于一定次数的类型的视频游戏,但我不知道该怎么做。我确实发现了一个StackOverflow问题,这个问题似乎是相关的,但我根本无法破译这个解决方案(可能是因为我从未听说过R,而且我对函数编程的记忆充其量也很生疏)。 帮助?
我想过滤熊猫DataFrame,它从DataFrame中过滤掉除值中声明的行之外的所有其他列。我如何才能做到这一点并获得预期输出。 预期输出:
我有一个熊猫DataFrame(df),有很多列,其中两个是“年”和“col_1” 我还有一个列表中总结的提取标准(标准): [1234,5432,...,54353,654,1234]. 如果满足以下条件,我想提取此数据帧的子集: 虽然我可以列出所有这些标准的组合,但我想在一个简短的行中这样做,比如: (来自如何按多列筛选数据帧) 请告诉我怎么做。非常感谢。