如何基于isPeriod为True对应的quadId值过滤Pandas DataFrame
实现方法
你可以按两步完成需求:
- 提取所有
isPeriod为True的行对应的quadId值,你已说明所有符合条件的行quadId完全一致,直接取第一条结果即可 - 用拿到的目标quadId值过滤整个DataFrame
完整代码如下:
import pandas as pd # 构造原始DataFrame data = {'retailer': [2, 2, 2, 2, 2, 5, 5, 5, 5, 5], 'store': [1, 1, 1, 1, 1, 7, 7, 7, 7, 7], 'week':[2021110701, 2021101301, 2021100601, 2021092901, 2021092201, 2021110701, 2021101301, 2021100601, 2021092901, 2021092201], 'isPeriod': [False, True, False, False, False, False, False, True, False, False], 'quadId': [2021112804, 2021103104, 2021103104, 2021103104, 2021103104, 2021100304, 2021100304, 2021103104, 2021103104, 2021103104] } df = pd.DataFrame(data) # 步骤1:获取目标quadId target_quad_id = df.loc[df['isPeriod'] == True, 'quadId'].iloc[0] # 步骤2:过滤全表得到结果 filtered_df = df[df['quadId'] == target_quad_id] # 验证结果 print(filtered_df)
运行上述代码得到的filtered_df和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Jane Miller
相关产品推荐
相关产品推荐

