获取特定列的列名称

时间:2017-04-26 10:33:20

标签: python pandas

我从一个以密码命名的列的接口获取数据帧,其中我知道一些在所有列上互斥的子串。

简化示例如下所示:

df = pandas.DataFrame({'d10432first34sf':[1,2,3],'d10432second34sf':[4,5,6]})
df
   d10432first34sf  d10432second34sf
0                1                 4
1                2                 5
2                3                 6

由于我知道列子串,我可以通过以下方式访问各个列:

df.filter(like='first')
   d10432first34sf
0                1
1                2
2                3

df.filter(like='second')
   d10432second34sf
0                 4
1                 5
2                 6

但是现在,我还需要获取每列的确切列名,这对我来说是未知的。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

添加.columns

cols = df.filter(like='first').columns
print (cols)
Index(['d10432first34sf'], dtype='object')

或更好boolean indexingcontains

cols = df.columns[df.columns.str.contains('first')]
print (cols)
Index(['d10432first34sf'], dtype='object')

计时不一样:

 df = pd.DataFrame({'d10432first34sf':[1,2,3],'d10432second34sf':[4,5,6]})
df = pd.concat([df]*10000, axis=1).reset_index(drop=True)
df = pd.concat([df]*1000).reset_index(drop=True)
df.columns = df.columns + pd.Series(range(10000 * 2)).astype('str')

print (df.shape)
(3000, 20000)

In [267]: %timeit df.filter(like='first').columns
10 loops, best of 3: 117 ms per loop

In [268]: %timeit df.columns[df.columns.str.contains('first')]
100 loops, best of 3: 11.9 ms per loop
相关问题