df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0],
                   'num_specimen_seen': [10, 2, 1, 8]},
                   index=['falcon', 'dog', 'spider', 'fish'])


其中num_legsnum_wingsnum_specimen_seen是列。

现在,我有一个像('num_wings', 'num_legs')的元组,想检查是否有df列的值?如果是,则返回true,否则返回false。

('num_wings', 'num_legs')->这将返回true
('abc', 'num_legs')->否

最佳答案

您可以在此处使用get_indexer



idxr = df.columns.get_indexer(tup)
all(idxr>-1)


性能

cols = pd.Index(np.arange(10_000))
tup = tuple(np.arange(10_001))

%timeit all(cols.get_indexer(tup)>-1)
3.86 ms ± 87.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit all(e in cols for e in tup)
5.96 ms ± 69.6 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

关于python - Pandas 和元组检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57928364/

10-12 17:48