我们假设以下是一个数据框
import pandas as pd
import numpy as np
df = pd.DataFrame({'group1' : ['A', 'A', 'A', 'A',
'A', 'A', 'A', 'A'],
'group2' : ['A', 'A', 'A', 'A',
'A', 'A', 'A', 'A'],
'group3' : ['A', 'A', 'A', 'A',
'A', 'A', 'A', 'A'],
'group4' : ['A', 'A', 'A', 'A',
'A', 'A', 'A', 'A'],
'group5' : ['C', 'C', 'C', 'C',
'C', 'E', 'E', 'E'],
'group6' : ['C', 'C', 'C', 'C',
'C', 'E', 'E', 'E'],
'group7' : ['A', 'A', 'A', 'A',
'A', 'A', 'A', 'A'],
'time' : [-6,-5,-4,-3,-2,-6,-3,-4] ,
'col': [1,2,3,4,5,6,7,8]})
现在,我只希望从数据框中选择某些切片,而我应用的第一种方法是concat:
a=df.iloc[:,0:2]
b=df.iloc[:,6:8]
df1=pd.concat([a,b],sort=False)
df1
我从这段代码中得到的输出如下
group1 group2 group7 time
0 A A NaN NaN
1 A A NaN NaN
2 A A NaN NaN
3 A A NaN NaN
4 A A NaN NaN
5 A A NaN NaN
6 A A NaN NaN
7 A A NaN NaN
0 NaN NaN A -6.0
1 NaN NaN A -5.0
2 NaN NaN A -4.0
3 NaN NaN A -3.0
4 NaN NaN A -2.0
5 NaN NaN A -6.0
6 NaN NaN A -3.0
7 NaN NaN A -4.0
这似乎是一个奇怪的结果。但是如果我尝试使用np_r
df.iloc[:5, np.r_[0:2,6:8]]
输出是正确的...
group1 group2 group7 time
0 A A A -6
1 A A A -5
2 A A A -4
3 A A A -3
4 A A A -2
5 A A A -6
6 A A A -3
7 A A A -4
使用concat修复输出是否更有效,np_r是组合数据帧切片的最佳方法吗?如果是,为什么?
答案 0 :(得分:1)
使用axis=1
a=df.iloc[:,0:2]
b=df.iloc[:,6:8]
df1=pd.concat([a,b],sort=False, axis=1)
group1 group2 group7 time
0 A A A -6
1 A A A -5
2 A A A -4
3 A A A -3
4 A A A -2
5 A A A -6
6 A A A -3
7 A A A -4