如果我的列名与某些数据相对应,请使用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函数来完成这项工作?
答案 0 :(得分:1)
我不确定你为什么不想使用列表理解 - 我更喜欢它的可读性 - 但是它可以写成地图:
map(lambda col: data.columns.get_loc(col), colnames)
答案 1 :(得分:0)
这很好,但这是searchsorted
的用途:
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])