Python 使用map或apply使用列名列表获取列的多个索引

Python 使用map或apply使用列名列表获取列的多个索引,python,pandas,Python,Pandas,如果我有与某些数据对应的列名,则使用熊猫: import numpy as np import pandas as pd data = pd.DataFrame(np.zeros((5,4)), columns=['x1', 'a', 'c', 'b']) colnames = ['a', 'b'] 然后我可以得到如下列位置: [data.columns.get_loc(col) for col in colnames] 是否有一种方法可以使用map或apply函数来完成此操作 我不确定您为

如果我有与某些数据对应的列名,则使用熊猫:

import numpy as np
import pandas as pd
data = pd.DataFrame(np.zeros((5,4)), columns=['x1', 'a', 'c', 'b'])
colnames = ['a', 'b']
然后我可以得到如下列位置:

[data.columns.get_loc(col) for col in colnames]

是否有一种方法可以使用map或apply函数来完成此操作

我不确定您为什么不想使用列表理解-我更喜欢它的可读性,但它可以写成地图:

map(lambda col: data.columns.get_loc(col), colnames)

这很好,但这就是目的:


你想完成什么?是否希望列在列列表中的位置?为什么你不能使用你在问题中给出的理解列表?呸,很抱歉问题中有错别字。但是,是的,数据帧中列的索引或位置,目前使用列表理解来实现,但是由于colnames是一个iterable,因此应该有一种使用map或apply的方法?如果使用python3,您希望使用
list()
list(map(lambda col:data.columns.get_loc(col),colnames))
def get_all_locs(index, x):
    v = index.values
    a = v.argsort()
    i = a.argsort()
    return a[v[a].searchsorted(x)]

get_all_locs(data.columns, colnames)

array([1, 3])