首页 > 解决方案 > 删除列但保留特定值 pandas df

问题描述

我确定这是在某处,但我似乎找不到它。我正在尝试删除或选择指定columnspandas df. 但我想保留某些值或strings删除那些值columns

对于以下内容,df我想保留但删除其他所有内容。'Big','Cat'Col B,C

import pandas as pd

d = ({
    'A' : ['A','Keep','A','Value'],           
    'B' : ['Big','X','Big','Y'],
    'C' : ['Cat','X','Cat','Y'],
    })

df = pd.DataFrame(data=d)

如果我执行以下任一操作,它只会选择该行。

Big = df[df['B'] == 'Big']
Cat = df[df['C'] == 'Cat']

我的预期输出是:

       A    B    C
0      A  Big  Cat
1   Keep          
2      A  Big  Cat
3  Value 

我需要类似的东西x = df[df['B','C'] != 'Big','Cat']

标签: pythonpandasdataframe

解决方案


似乎您只想保留一些值并在 ohters 上有空字符串

利用np.where

keeps = ['Big', 'Cat']
df['B'] = np.where(df.B.isin(keeps), df.B, '')
df['C'] = np.where(df.C.isin(keeps), df.C, '')


    A     B     C
0   A     Big   Cat
1   Keep        
2   A     Big   Cat
3   Value       

另一种解决方案使用df.where

cols = ['B', 'C']
df[cols] = df[cols].where(df.isin(keeps)).fillna('')

    A     B     C
0   A     Big   Cat
1   Keep        
2   A     Big   Cat
3   Value       

推荐阅读