如何将 lambda 应用于每个数据框行以便测试两个条件?

我有一个包含两列的数据集:在第一列中,是文件的完整目录路径。在第二列中,文件的最后修改日期。我试图计算每个上层文件夹(“狗”、“猫科动物”、“老鼠”、“食蚁兽”)中最后修改时间晚于 2004 年 6 月 23 日的文件数。最终,我想要这样的东西:

http://img4.mukewang.com/63ec984c0001ba6501290081.jpg

这是我的数据集:


import pandas as pd


data = {'FullName': ["dog\cat\cow\rover.doc","feline\cat\cow\digger.doc","dog\cat\cow\whatamess.doc","mouse\cat\mouse\jude.doc","anteater\cat\mouse\sam.doc","dog\cat\owl\audrey.doc",

], 'LastWriteTime': ['2003-01-02', '2004-01-02', '2005-01-02','2006-01-02','2007-01-02','2008-01-02']}


df1 = pd.DataFrame(data)

我可以计算上层文件夹在数据集中重复出现的次数:


df2 = (df1['FullName'].apply(lambda x: x.split('\\')[0]).value_counts()


我还可以计算日期大于“2004-06-23”的文件在数据集中重复出现的次数:


df3 = df1['LastWriteTime'].apply(lambda x: pd.to_datetime((x),yearfirst=True) > pd.to_datetime('2004-06-23',yearfirst=True)).value_counts()


我尝试将它们组合如下:


df2 = (df1['FullName'].apply(lambda x: x.split('\\')[0]) & pd.to_datetime((x),yearfirst=True) > pd.to_datetime('2004-06-23',yearfirst=True)).value_counts()

但我得到错误代码:x is not defined


有谁知道如何组合它们?


HUWWW
浏览 130回答 1
1回答

有只小跳蛙

您只能使用表达式。请参阅 python文档。只需将它括在括号中,python 解释器就会很高兴。lambda x: (x.split('\\')[0]) & (pd.to_datetime(x, yearfirst=True) > pd.to_datetime('2004-06-23',yearfirst=True)))但是,您正在将函数应用于相应的表“LastWriteTime”和“FullName”,函数更适合。创建多个评估函数并将其与相应的键存储在字典中,并传递给 aggregate()。def check_date(x):    return pd.to_datetime(x) > pd.to_datetime('2004-06-23', yearfirst=True)def files_count(x):    return x.split('\\')[0]df1 = pd.DataFrame(data)func_dict = {'FullName': files_count, 'LastWriteTime': check_date}df4 = df1.aggregate(func_dict)  # applying multiple function to multiple columnsprint(df4, end='\n'*2)# use df[df['a']] & df[df['b']] for filtering.df3_filtered = df4[df4['LastWriteTime']]  # filtering.print(df3_filtered, end='\n'*2)df2 = df3_filtered['FullName'].value_counts()  # counting.print(df2)结果:   FullName  LastWriteTime0       dog          False1    feline          False2       dog           True3     mouse           True4  anteater           True5       dog           True   FullName  LastWriteTime2       dog           True3     mouse           True4  anteater           True5       dog           Truedog         2anteater    1mouse       1Name: FullName, dtype: int64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python