Python Pandas-df.loc-添加其他条件不起作用

时间:2019-11-30 04:04:09

标签: python pandas

我有一个脚本,其中包含以下符合预期目的的代码

Table2 = df.loc[df.Date.between('2018-11-22','2018-11-30')].groupby(df['FPYear'])[['New Customer', 'Existing Customer', 'revenue']].sum()

但是,现在我试图添加一个附加条件,以便在名为“ region”的列中进行过滤,该列在数据集中的值是Canada,但似乎没有用。

Table2 = df.loc[df.Date.between('2018-11-22','2018-11-30'), df['Region'] = 'Canada'].groupby(df['FPYear'])[['New Customer', 'Existing Customer', 'revenue']].sum()

附加过滤器似乎没有影响。谁能帮忙。谢谢

2 个答案:

答案 0 :(得分:2)

如@Alaxander所述

这是一个示例片段:

import pandas

df = pd.DataFrame({
    "A": [1,2,3],
    "B": [4,5,6],
    "C": [1,1,1]
})

df.loc[((d["A"]==1) & (d["B"]==4)), ["A", "B"]]

此外,您可能想看看df["Region"] = "Canada"中使用的赋值运算符,将它用作过滤器不是==吗?我也在下面的代码中添加了此代码。

如果需要特定字段,则输入您的代码:

Table2 = df.loc[((df.Date.between('2018-11-22','2018-11-30')) & (df['Region'] == 'Canada')), ["Date", "Region"]].groupby(df['FPYear'])[['New Customer', 'Existing Customer', 'revenue']].sum()

如果需要所有字段,则输入您的代码:

Table2 = df.loc[((df.Date.between('2018-11-22','2018-11-30')) & (df['Region'] == 'Canada'))].groupby(df['FPYear'])[['New Customer', 'Existing Customer', 'revenue']].sum()

PS:感谢@Alexandar提到了这个错误。

答案 1 :(得分:0)

我通过执行以下操作找出了

Text