Python基于缺失区域cod删除分组行

2024-09-30 02:18:42 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的df中,我们有两个“Mixes”,由Mix\u Name和Mix\u ID列表示。在每个混音中都有多个音轨,音轨ID是唯一的,包含不同的区域(见区域栏)。你知道吗

Mix_Name    Mix_ID  Territories     Track_Title  Artist         Track_ID
Mix Vol 1   abc123  GB | US | MX    Cabala       Prok & Fitch   12345678
Mix Vol 1   abc123  US | CA         Autosave     Fedde          9101112
Mix Vol 1   abc123  US | CA         4 Life       Firebeatz      4151617
Mix Vol 1   abc123  IE | MX         4 Life       Firebeatz      18192021
Mix Vol 2   xyz456  CA              Warrior      My Nu Leng     22232425
Mix Vol 2   xyz456  FR | DE | NE    Warrior      My Nu Leng     27282930
Mix Vol 2   xyz456  US | CA         I'm Madonna  Madonna        31323334
Mix Vol 2   xyz456  CA | US | FR    Trouble      Gregor Salto   35363738

我希望在这里做的是找出哪些轨道没有美国领土,如果任何轨道没有美国领土,我想从我的数据帧中删除整个混合。生成的数据帧如下所示,因为“Mix Vol 2”在其中一个轨迹中丢失了美国领土:

Mix_Name    Mix_ID  Territories     Track_Title  Artist         Track_ID
Mix Vol 1   abc123  GB | US | MX    Cabala       Prok & Fitch   12345678
Mix Vol 1   abc123  US | CA         Autosave     Fedde          9101112
Mix Vol 1   abc123  US | CA         4 Life       Firebeatz      4151617
Mix Vol 1   abc123  IE | MX         4 Life       Firebeatz      18192021

我知道我需要Groupby:'Mix\u ID'、'Track\u Title'和'Artist',但我不确定如何搜索territories列以查看它是否包含“US”territories。任何帮助都将不胜感激!你知道吗


Tags: nameidtitleartisttrackcausmx
2条回答

如果这是不正确的,请澄清,但我认为您正在尝试:

确定任何轨道,没有我们在'领土',然后删除整个组合,这首曲目属于。你知道吗

如果是这样,您可以通过以下操作来实现此目的。。你知道吗

#get list of all Mix_Names that have at least 1 track without US in Territories
mixes_to_drop=df[~df['Territories'].str.contains('US')]['Mix_Name'].unique().tolist()
#filter out the mixes that have a 'Mix_Name' that is in the list of mixes to drop
df[~df['Mix_Name'].isin(mixes_to_drop)]

希望这能帮助或引导你朝着正确的方向前进

df.groupby(['Mix_Name', 'Track', 'Artist']).filter(lambda x: (x['Territories'].str.contains('US').any()))

执行groupby,然后过滤组以检查territories列是否包含“US”。你知道吗

编辑

notInUS = df.groupby(['Mix_Name','Track_Title','Artist']).filter(lambda x: ~x['Territories'].str.contains('US').any())['Mix_Name'].unique()
df[~df['Mix_Name'].isin(notInUS)]

我们可以寻找在美国没有音轨的独特的Mix\u名称,然后从我们的主df中过滤出来。你知道吗

相关问题 更多 >

    热门问题