python pandas:不区分大小写的drop column

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python pandas:不区分大小写的drop column相关的知识,希望对你有一定的参考价值。

我有一个df,我想按标签删除一列,但不区分大小写。注意:我不想改变我的df中的任何内容,所以我想避免'str.lower'。

继承人我的df:

print df 

Name UnweightedBase  Base     q6a1    q6a2    q6a3    q6a4    q6a5   q6a6 eSubTotal
Name                                                                               
Base           1006  1006  100,00%  96,81%  96,81%  96,81%  96,81%  3,19%   490,44%
q6_6             31    32  100,00%       -       -       -       -      -         -
q6_3           1006  1006   43,44%  26,08%  13,73%   9,22%   4,34%  3,19%   100,00%
q6_4           1006  1006   31,78%  31,71%  20,09%  10,37%   2,87%  3,19%   100,00%

我可以申请下面的代码吗?

df.drop(['unWeightedbase', 'Q6A1'],1)
答案

我认为你可以做的是创建一个函数来为你执行不区分大小写的搜索:

In [90]:
# create a noddy df
df = pd.DataFrame({'UnweightedBase':np.arange(5)})
print(df.columns)
# create a list of the column names
col_list = list(df)
# define our function to perform the case-insensitive search
def find_col_name(name):
    try:
        # this uses a generator to find the index if it matches, will raise an exception if not found
        return col_list[next(i for i,v in enumerate(col_list) if v.lower() == name)]
    except:
        return ''
df.drop(find_col_name('unweightedbase'),1)
Index(['UnweightedBase'], dtype='object')
Out[90]:
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3, 4]

我的搜索代码归结为这个SO:find the index of a string ignoring cases

以上是关于python pandas:不区分大小写的drop column的主要内容,如果未能解决你的问题,请参考以下文章

在 Pandas DataFrame 的列中查找并替换所有匹配但不区分大小写的字符串

Python的pandas中,drop_duplicates函数怎么根据索引来去重

pandas python 怎么删除表格中的某一行?

Pandas ValueError:只能将大小为1的数组转换为Python标量

python get_dummies pandas with drop_first

转载使用pandas进行数据清洗