我使用以下内容创建了一个数据框:
df = pd.DataFrame(np.random.rand(10, 3), columns=['alp1', 'alp2', 'bet1'])
我想获得一个数据框,其中包含df
中名称中包含alp
的所有列。这只是我问题的一个简单版本,因此我的真实数据框将有更多列。
答案 0 :(得分:12)
替代方法:
es6
答案 1 :(得分:3)
选项1
完整numpy
+ pd.DataFrame
m = np.core.defchararray.find(df.columns.values.astype(str), 'alp') >= 0
pd.DataFrame(df.values[:, m], df.index, df.columns[m])
alp1 alp2
0 0.819189 0.356867
1 0.900406 0.968947
2 0.201382 0.658768
3 0.700727 0.946509
4 0.176423 0.290426
5 0.132773 0.378251
6 0.749374 0.983251
7 0.768689 0.415869
8 0.292140 0.457596
9 0.214937 0.976780
选项2
numpy
+ loc
m = np.core.defchararray.find(df.columns.values.astype(str), 'alp') >= 0
df.loc[:, m]
alp1 alp2
0 0.819189 0.356867
1 0.900406 0.968947
2 0.201382 0.658768
3 0.700727 0.946509
4 0.176423 0.290426
5 0.132773 0.378251
6 0.749374 0.983251
7 0.768689 0.415869
8 0.292140 0.457596
9 0.214937 0.976780
<强> 定时 强>
numpy
更快
答案 2 :(得分:2)
你有几个选择,这里有几个:
1 - filter
与like
:
df.filter(like='alp')
2 - filter
与regex
:
df.filter(regex='alp')
答案 3 :(得分:0)
如果@Pedro答案在这里不起作用,这是熊猫0.25的官方处理方法
示例数据框:
>>> df = pd.DataFrame(np.array(([1, 2, 3], [4, 5, 6])),
... index=['mouse', 'rabbit'],
... columns=['one', 'two', 'three'])
one two three mouse 1 2 3 rabbit 4 5 6
df.filter(items=['one', 'three'])
one three
mouse 1 3
rabbit 4 6
df.filter(regex='e$', axis=1) #ending with *e*, for checking containing just use it without *$* in the end
one three
mouse 1 3
rabbit 4 6
df.filter(like='bbi', axis=0)
one two three
rabbit 4 5 6