Dataframe 查询中的 Python lambda 函数

标签 python pandas dataframe lambda

我有一个具有以下格式的 DataFrame(不是完整大小):

    +------------+------+-------+-------+-------+-----+
    |    Date    | Type |  T0   |  T1   |  T2   | ... |
    +------------+------+-------+-------+-------+-----+
    | 2017-01-05 | GBP  | 0.001 | 0.005 | 0.006 |     |
    | 2017-01-05 | USD  | 0.001 | 0.005 | 0.006 |     |
    | 2017-01-05 | EUR  | 0.001 | 0.005 | 0.006 |     |
    | 2017-01-05 | YAN  | 0.001 | 0.005 | 0.006 |     |
    | 2017-01-05 | ZBR  | 0.001 | 0.005 | 0.006 |     |
    | 2017-01-06 | GBP  | 0.001 | 0.005 | 0.006 |     |
    | 2017-01-06 | USD  | 0.001 | 0.005 | 0.006 |     |
    | .......... | ...  |...... |       |       |     |
    +------------+------+-------+-------+-------+-----+

本质上,我试图过滤掉两个指定日期之间的日期,并且类型等于美元和英镑。我目前可以对日期过滤器执行此操作,但不能对类型过滤器执行此操作:

df = df[(df.Date <= EndDate) & (df.Date >= StartDate)]

我似乎不知道如何过滤我需要的类型(因为它需要“或”而不是“&”)。

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

任何人都可以帮助查询并解释如何使用 Lambda 示例实现相同的目的吗?

谢谢

最佳答案

我认为您需要添加条件 isin :

df1 = df[(df.Date <= EndDate) & (df.Date >= StartDate) & (df.Type.isin(['USD','GBP']))]

另一个解决方案 query :

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

关于Dataframe 查询中的 Python lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42486464/

相关文章:

R - 在坐标对的数据框中获取坐标对的行号

c# - 理解并创建 Python 协议(protocol)

python - 检查变量是否为整数

python - 使用 python selenium 进行 poc 在 twitter 中发布推文

python - 使用 Python 排序时如何获取数据框中值的(相对)位置?

python - 通过比较不同数据框中的其他两列来创建新的数据框列

python - 从 Pandas 中的两个不同行解析日期

database - 使用 powerbi 在单个 dateTime 过滤器上过滤多个表

python - Pandas/SQLITE 数据框图

javascript - 如何从 AJAX 向 Odoo 10 自定义模块 Controller 发出 POST/GET 请求? (被 CORS 政策阻止)