在一个DataFrame中选择多组列

时间:2019-09-12 21:52:25

标签: pandas dataframe

是否有一种方法可以从数据框中选择多组列,而无需分别命名列?例如,第1到第4列,第7到第9列以及第22到29列的所有行。

我尝试了

df.loc[:, [1:5, 7:10, 22:30] ]

df.loc[:, [[1:5], [7:10], [22:30]] ]

没有成功

2 个答案:

答案 0 :(得分:1)

尝试一下:

df = pd.DataFrame(np.random.random((10,25)))

df.iloc[:, np.r_[1:5, 10:15, 24]]

输出:

         1         2         3         4         10        11        12  \
0  0.919851  0.852250  0.296771  0.562167  0.926956  0.425690  0.347112   
1  0.053743  0.709286  0.866658  0.873554  0.588566  0.349387  0.582820   
2  0.910201  0.918976  0.170105  0.967791  0.839613  0.200846  0.680498   
3  0.606104  0.932580  0.857744  0.876963  0.199340  0.303397  0.103754   
4  0.310878  0.386755  0.792151  0.664561  0.295020  0.980937  0.161358   
5  0.808738  0.473452  0.190060  0.882827  0.778226  0.054262  0.052157   
6  0.381418  0.216191  0.034603  0.314118  0.806126  0.535102  0.903150   
7  0.531248  0.411528  0.644153  0.994051  0.727920  0.587441  0.679924   
8  0.585064  0.352427  0.940689  0.684018  0.544400  0.765451  0.018906   
9  0.075305  0.526637  0.911727  0.945098  0.105858  0.299441  0.862912   

         13        14        24  
0  0.084237  0.317501  0.906934  
1  0.949726  0.744821  0.149304  
2  0.529243  0.492711  0.933917  
3  0.723055  0.898373  0.642724  
4  0.929206  0.540533  0.467883  
5  0.825112  0.357224  0.235781  
6  0.258703  0.114978  0.506079  
7  0.758599  0.440214  0.863970  
8  0.936511  0.117202  0.089875  
9  0.968953  0.509748  0.584470  

答案 1 :(得分:0)

您需要使用iloc

mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)

生成数据帧,然后,如果您要制定单阵列选择标准:

print(df.iloc[:2]):

输出:

      a     b     c
0     1     2     3
1   100   200   300
2  1000  2000  3000

编辑:是的,如果您确实想要多个选择条件,则可以使用np.r_,这在处理多个数组时非常有用,并且需要逐行合并。

df.iloc[:,np.r_[1:5, 10:15, 22:30]]