Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据帧查询中的Python lambda函数_Python_Pandas_Dataframe_Lambda - Fatal编程技术网

数据帧查询中的Python lambda函数

数据帧查询中的Python lambda函数,python,pandas,dataframe,lambda,Python,Pandas,Dataframe,Lambda,我有一个数据帧,格式如下(不是完整大小): 本质上,我试图将其过滤为介于两个指定日期和类型等于USD和GBP之间的日期。我目前可以对日期筛选器执行此操作,但不能对类型筛选器执行此操作: df = df[(df.Date <= EndDate) & (df.Date >= StartDate)] df=df[(df.Date=StartDate)] 我似乎不知道如何过滤我需要的类型(因为它需要“or”和“not”&”) 此外,我想知道如何在一行中完成这一切。我见过其他人使用

我有一个数据帧,格式如下(不是完整大小):

本质上,我试图将其过滤为介于两个指定日期和类型等于USD和GBP之间的日期。我目前可以对日期筛选器执行此操作,但不能对类型筛选器执行此操作:

df = df[(df.Date <= EndDate) & (df.Date >= StartDate)]
df=df[(df.Date=StartDate)]
我似乎不知道如何过滤我需要的类型(因为它需要“or”和“not”&”)

此外,我想知道如何在一行中完成这一切。我见过其他人使用lambda做类似的事情,但我不太明白这些是如何工作的

有人可以帮助我查询并解释我如何通过Lambda示例实现相同的查询吗


谢谢

我认为您需要添加以下条件:

样本:

StartDate = '2017-01-04'
EndDate = '2017-01-05'
df1 = df[(df.Date <= EndDate) & (df.Date >= StartDate) & (df.Type.isin(['USD','GBP']))]
print (df1)
         Date Type     T0     T1     T2
0  2017-01-05  GBP  0.001  0.005  0.006
1  2017-01-05  USD  0.001  0.005  0.006

df2 = df.query('@EndDate >= Date >= @StartDate and Type in ["USD", "GBP"]')
print (df2)
         Date Type     T0     T1     T2
0  2017-01-05  GBP  0.001  0.005  0.006
1  2017-01-05  USD  0.001  0.005  0.006
StartDate='2017-01-04'
结束日期='2017-01-05'
df1=df[(df.Date=StartDate)和(df.Type.isin(['USD','GBP'])]
打印(df1)
日期类型T0 T1 T2
0 2017-01-05英镑0.001 0.005 0.006
1 2017-01-05美元0.001 0.005 0.006
df2=df.query(“@EndDate>=Date>=@StartDate并键入[“USD”,“GBP”]”)
打印(df2)
日期类型T0 T1 T2
0 2017-01-05英镑0.001 0.005 0.006
1 2017-01-05美元0.001 0.005 0.006

Nice
query
solution:)回答得很好。为了获得额外的积分,您能否举例说明如何使用lambda函数来实现这一点你认为通过呼叫进行选择吗?
df1 = df[(df.Date <= EndDate) & (df.Date >= StartDate) & (df.Type.isin(['USD','GBP']))]
df2 = df.query('@EndDate >= Date >= @StartDate and Type in ["USD", "GBP"]')
StartDate = '2017-01-04'
EndDate = '2017-01-05'
df1 = df[(df.Date <= EndDate) & (df.Date >= StartDate) & (df.Type.isin(['USD','GBP']))]
print (df1)
         Date Type     T0     T1     T2
0  2017-01-05  GBP  0.001  0.005  0.006
1  2017-01-05  USD  0.001  0.005  0.006

df2 = df.query('@EndDate >= Date >= @StartDate and Type in ["USD", "GBP"]')
print (df2)
         Date Type     T0     T1     T2
0  2017-01-05  GBP  0.001  0.005  0.006
1  2017-01-05  USD  0.001  0.005  0.006