python 序列通过直接==比较找到值,但在isin()过程中失败

laik7k3q  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(112)

我尝试通过以下方法过滤 Dataframe :

filter = (df_1['Year']==2022) & **(df_1['Quarter'].isin(['2022Q3','2022Q4']))**
df_incumbent = df_1[filter].groupby(['Lane','Carrier Scac','Quarter']).agg({'Cust Linehaul':np.mean,'Load Number':'count'}).unstack('Quarter',fill_value='NaN')
df_incumbent

而且它什么也不返回。但是当我逐项进行直接比较时,它返回了一个 Dataframe 。

filter = (df_1['Year']==2022) & (df_1['Quarter']=='2022Q3')

关于df_1 ['Quarter']的更多信息。如果它能提供一些线索的话。

df_1['Quarter'].unique()

<PeriodArray>
['2021Q4', '2021Q1', '2021Q3', '2021Q2', '2022Q1', '2022Q2', '1970Q1',
    'NaT', '2022Q3', '2022Q4']
Length: 10, dtype: period[Q-DEC]

我已经成功地使用了isin(),传递了一个项目列表,但不确定为什么这个问题不起作用。我尝试过其他问题,但仍然无法解决它。

gmxoilav

gmxoilav1#

看起来isin仅适用于具有相同dtype的列表,请先尝试创建PeriodIndex:

df_1['Quarter'].isin(pd.PeriodIndex(['2022Q3','2022Q4'], freq='Q'))

相关问题