gpt4 book ai didi

python - 在 Pandas 列表中进行列匹配时保留大小写

转载 作者:行者123 更新时间:2023-12-01 03:10:00 26 4
gpt4 key购买 nike

我有一个数据框,其中包含不同大小写的列名称字符串以及小写字符串列表。

a = [5, 5, 4, 6]
b = [4, 4, 4, 4]
c = [6, 8, 2, 3]
d = [8, 6, 4, 3]

df = pd.DataFrame({'a': a,
'B_B': b,
'CC_Cc': c,
'Dd_DdDd': d})

cols = ['b_b', 'cc_cc', 'dd_dddd']

我想选择 df 中与 cols 中的字符串匹配的列,同时保留 df 中列的大小写。我已经能够通过将列名称全部小写来匹配列名称,但我不确定如何保存数据帧列的原始大小写。

在这种情况下,我想创建一个新的数据框,其中仅包含 keep cols 中 df 中的列,但包含其原始情况。我该如何去做呢?

期望的输出:

   B_B  CC_Cc  Dd_DdDd  
0 4 6 8
1 4 8 6
2 4 2 4
3 4 3 3

最佳答案

您可以使用str.lower()将列名转换为小写,然后使用isin方法构造一个逻辑系列来选择列;列名不会以这种方式更改:

df.loc[:, df.columns.str.lower().isin(cols)]

enter image description here

另一种方法是使用filter函数,在正则表达式中指定修饰符(?i)来忽略大小写:

df.filter(regex="(?i)" + "|".join(cols))

enter image description here

请注意,此正则表达式方法还匹配包含 cols 列表中模式的列名称,如果您想要忽略大小写的精确匹配,可以在以下位置添加单词边界:

df.filter(regex="(?i)\\b"+"\\b|\\b".join(cols)+"\\b")

关于python - 在 Pandas 列表中进行列匹配时保留大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42965268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com