熊猫分组条件过滤

ccsv

我有一个DataFrame:

import pandas as pd

df = pd.DataFrame({'First': ['Sam', 'Greg', 'Steve', 'Sam',
                             'Jill', 'Bill', 'Nod', 'Mallory', 'Ping', 'Lamar'],
                   'Last': ['Stevens', 'Hamcunning', 'Strange', 'Stevens',
                            'Vargas', 'Simon', 'Purple', 'Green', 'Simon', 'Simon'],
                   'Address': ['112 Fake St',
                               '13 Crest St',
                               '14 Main St',
                               '112 Fake St',
                               '2 Morningwood',
                               '7 Cotton Dr',
                               '14 Main St',
                               '20 Main St',
                               '7 Cotton Dr',
                               '7 Cotton Dr'],
                   'Status': ['Infected', '', 'Infected', '', '', '', '','', '', 'Infected'],
                   })

然后应用以下分组代码

df_index = df.groupby(['Address', 'Last']).filter(lambda x: (x['Status'] == 'Infected').any()).index
df.loc[df_index, 'Status'] = 'Infected'

而不是按照分组代码将所有内容都标记为“已感染”。有没有一种方法可以选择将要更新的值,以便可以将它们标记为其他值?例如:

df2 = df.copy(deep=True)
df2['Status'] = ['Infected', '', 'Infected', 'Infected2', '', 'Infected2', '', '', 'Infected2', 'Infected']
马吕斯

我认为这可以达到您想要的结果,但效果略有不同:

def infect_new_people(group):
    if (group['Status'] == 'Infected').any():
        # Only affect people not already infected
        group.loc[group['Status'] != 'Infected', 'Status'] = 'Infected2'
    return group['Status']

# Need group_keys=False so that each group has the same index
#   as the original dataframe
df['Status'] = df.groupby(['Address', 'Last'], group_keys=False).apply(infect_new_people)

df
Out[36]: 
         Address    First        Last     Status
0    112 Fake St      Sam     Stevens   Infected
1    13 Crest St     Greg  Hamcunning           
2     14 Main St    Steve     Strange   Infected
3    112 Fake St      Sam     Stevens  Infected2
4  2 Morningwood     Jill      Vargas           
5    7 Cotton Dr     Bill       Simon  Infected2
6     14 Main St      Nod      Purple           
7     20 Main St  Mallory       Green           
8    7 Cotton Dr     Ping       Simon  Infected2
9    7 Cotton Dr    Lamar       Simon   Infected

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按熊猫中的多个条件分组

来自分类Dev

熊猫-分组和过滤连续值

来自分类Dev

分组因子的条件过滤器-DPLyr

来自分类Dev

熊猫条件分组计数

来自分类Dev

熊猫:依存在/过滤问题分组

来自分类Dev

根据行条件过滤熊猫列

来自分类Dev

熊猫按日期和或条件过滤

来自分类Dev

熊猫不使用过滤条件

来自分类Dev

有条件分组-熊猫

来自分类Dev

分组依据的熊猫多重条件均值

来自分类Dev

熊猫:使用条件过滤器对动态选择的列进行操作分组

来自分类Dev

熊猫:条件和与分组依据

来自分类Dev

根据用户输入的不同条件过滤熊猫

来自分类Dev

在熊猫数据框中按条件分组

来自分类Dev

根据熊猫中的多个条件对行进行分组和过滤

来自分类Dev

根据给定的熊猫条件随机分组数据

来自分类Dev

通过包括按条件分组的列在熊猫中分组

来自分类Dev

根据分组条件过滤数据集

来自分类Dev

熊猫分组依据和基于条件的计算

来自分类Dev

熊猫多重分组和过滤

来自分类Dev

熊猫分组过滤器

来自分类Dev

熊猫有条件分组

来自分类Dev

熊猫过滤和分组

来自分类Dev

熊猫通过相同的键过滤分组的项目

来自分类Dev

熊猫:具有多种条件的分组

来自分类Dev

熊猫数据框过滤多个条件

来自分类Dev

熊猫过滤分组数据并汇总

来自分类Dev

根据行条件过滤熊猫列

来自分类Dev

按条件过滤熊猫