【问题标题】:Python : Dropping rows of a dataframe and keep a specific groupPython:删除数据框的行并保留特定组
【发布时间】:2021-02-19 10:54:07
【问题描述】:

问题还是没有回答!!!

假设我有这个数据框:

将熊猫导入为 pd

Name = ['ID', 'Country', 'IBAN','ID_bal_amt', 'ID_bal_time','Dan_city','ID_bal_mod','Dan_country','ID_bal_type', 'ID_bal_amt', 'ID_bal_time','ID_bal_mod','ID_bal_type' ,'Dan_sex', 'Dan_Age', 'Dan_country','Dan_sex' , 'Dan_city','Dan_country','ID_bal_amt', 'ID_bal_time','ID_bal_mod','ID_bal_type' ]
Value = ['TAMARA_CO', 'GERMANY','FR56', '12','June','Berlin','OPBD', '55','CRDT','432', 'August', 'CLBD','DBT', 'M', '22', 'FRA', 'M', 'Madrid', 'ESP','432','March','FABD','CRDT']
Ccy = ['','','','EUR','EUR','','EUR','','','','EUR','EUR','USD','USD','USD','','CHF', '','DKN','','','USD','CHF']
Group = ['0','0','0','1','1','1','1','1','1','2','2','2','2','2','2','2','3','3','3','4','4','4','4']

df = pd.DataFrame({'Name':Name, 'Value' : Value, 'Ccy' : Ccy,'Group':Group})

print(df)

          Name      Value  Ccy Group
0            ID  TAMARA_CO          0
1       Country    GERMANY          0
2          IBAN       FR56          0
3    ID_bal_amt         12  EUR     1
4   ID_bal_time       June  EUR     1
5      Dan_city     Berlin          1
6    ID_bal_mod       OPBD  EUR     1
7   Dan_country         55          1
8   ID_bal_type       CRDT          1
9    ID_bal_amt        432          2
10  ID_bal_time     August  EUR     2
11   ID_bal_mod       CLBD  EUR     2
12  ID_bal_type        DBT  USD     2
13      Dan_sex          M  USD     2
14      Dan_Age         22  USD     2
15  Dan_country        FRA          2
16      Dan_sex          M  CHF     3
17     Dan_city     Madrid          3
18  Dan_country        ESP  DKN     3
19   ID_bal_amt        432          4
20  ID_bal_time      March          4
21   ID_bal_mod       FABD  USD     4
22  ID_bal_type       CRDT  CHF     4

我想减少这个数据框!我想通过保留与模式关联的行组来仅减少包含字符串“bal”的行:“CLBD”。这意味着我在值“CLBD”中搜索名称“ID_bal_mod”,然后保留同一组中的所有其他名称 ID_bal_amt、ID_bal_time、ID_bal_mod、ID_bal_type。在我们的示例中,它是组 2 中的名称

另外,我想将它们在“组”列中的值更改为 0。

所以最后我想获得这个索引也被重置的新数据框

          Name      Value  Ccy Group
0            ID  TAMARA_CO          0
1       Country    GERMANY          0
2          IBAN       FR56          0
3      Dan_city     Berlin          1
4   Dan_country         55          1
5    ID_bal_amt        432          0
6   ID_bal_time     August  EUR     0
7    ID_bal_mod       CLBD  EUR     0
8   ID_bal_type        DBT  USD     0
9       Dan_sex          M  USD     2
10      Dan_Age         22  USD     2
11  Dan_country        FRA          2
12      Dan_sex          M  CHF     3
13     Dan_city     Madrid          3
14  Dan_country        ESP  DKN     3

任何人有一个有效的想法? 谢谢

【问题讨论】:

    标签: python pandas dataframe duplicates rows


    【解决方案1】:

    让我们试试你的逻辑:

    rows_with_bal = df['Name'].str.contains('bal')
    groups_with_CLBD = ((rows_with_bal & df['Value'].eq('CLBD')) 
                        .groupby(df['Group']).transform('any')
                       )
    
    # set the `Group` to 0 for `groups_with_CLBD`
    df.loc[groups_with_CLBD, 'Group'] = 0
    
    # keep the rows without bal or `groups_with_CLBD`
    df = df.loc[(~rows_with_bal) | groups_with_CLBD]
    

    输出:

               Name      Value  Ccy Group
    0            ID  TAMARA_CO          0
    1       Country    GERMANY          0
    2          IBAN       FR56          0
    5      Dan_city     Berlin          1
    7   Dan_country         55          1
    9    ID_bal_amt        432          0
    10  ID_bal_time     August  EUR     0
    11   ID_bal_mod       CLBD  EUR     0
    12  ID_bal_type        DBT  USD     0
    13      Dan_sex          M  USD     0
    14      Dan_Age         22  USD     0
    15  Dan_country        FRA          0
    16      Dan_sex          M  CHF     3
    17     Dan_city     Madrid          3
    18  Dan_country        ESP  DKN     3
    

    【讨论】:

    • 对不起,我认为它有效,但没有:您的代码更改了不包含“bal”的所有其他名称的列组中的值。 Dan_sex、Dan_Age、Dan_country 应该留在第 2 组。你知道我们可以如何改变吗?
    猜你喜欢
    • 1970-01-01
    • 2021-02-19
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    相关资源
    最近更新 更多