我只想获取名称以'Q1'
开头的列和以'Q3'
开头的列,我知道这可以通过执行以下操作实现:
new_df=df[['Q1_1', 'Q1_2', 'Q1_3','Q3_1', 'Q3_2', 'Q3_3']]
但是由于我的真实的df
太大(超过70个变量),我搜索一种方法,通过在列标题中只使用所需的第一个字母来获得new_df
。
我的示例 Dataframe 是:
df=pd.DataFrame({
'Q1_1': [np.random.randint(1,100) for i in range(10)],
'Q1_2': np.random.random(10),
'Q1_3': np.random.randint(2, size=10),
'Q2_1': [np.random.randint(1,100) for i in range(10)],
'Q2_2': np.random.random(10),
'Q2_3': np.random.randint(2, size=10),
'Q3_1': [np.random.randint(1,100) for i in range(10)],
'Q3_2': np.random.random(10),
'Q3_3': np.random.randint(2, size=10),
'Q4_1': [np.random.randint(1,100) for i in range(10)],
'Q4_2': np.random.random(10),
'Q4_3': np.random.randint(2, size=10)
})
df
具有以下显示:
Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q4_1 Q4_2 Q4_3
0 92 0.551722 1 36 0.063269 1 95 0.541573 1 91 0.521076 1
1 89 0.951076 1 82 0.853572 1 49 0.782290 1 98 0.232572 0
2 88 0.909953 1 19 0.544450 1 66 0.021061 1 51 0.951225 0
3 66 0.904642 1 17 0.727190 1 85 0.697792 0 35 0.412844 1
4 78 0.802783 1 23 0.634575 1 77 0.759861 0 55 0.460012 0
5 41 0.943271 1 63 0.460578 1 95 0.004986 1 89 0.970059 0
6 54 0.600558 0 18 0.031487 0 84 0.716314 0 84 0.636364 1
7 2 0.458006 0 95 0.029421 0 10 0.927356 1 27 0.031572 1
8 38 0.029658 1 30 0.125706 1 94 0.096702 1 32 0.241613 1
9 52 0.584300 1 85 0.026642 0 78 0.358952 0 70 0.696008 0
我想要一个更简单的方法来获得下面的sub-df:
Q1_1 Q1_2 Q1_3 Q3_1 Q3_2 Q3_3
0 92 0.551722 1 95 0.541573 1
1 89 0.951076 1 49 0.782290 1
2 88 0.909953 1 66 0.021061 1
3 66 0.904642 1 85 0.697792 0
4 78 0.802783 1 77 0.759861 0
5 41 0.943271 1 95 0.004986 1
6 54 0.600558 0 84 0.716314 0
7 2 0.458006 0 10 0.927356 1
8 38 0.029658 1 94 0.096702 1
9 52 0.584300 1 78 0.358952 0
如果你需要更多的细节,请让我知道在评论,
我们将非常感谢你方的任何帮助。
2条答案
按热度按时间zmeyuzjn1#
您可以使用
pd.DataFrame.filter
执行以下操作:ncecgwcz2#
您可以使用列表解析来获取所需的列标题,如下所示: