Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组合数据帧切片时concat和np_r之间的不同结果_Python_Pandas_Dataframe_Slice - Fatal编程技术网

Python 组合数据帧切片时concat和np_r之间的不同结果

Python 组合数据帧切片时concat和np_r之间的不同结果,python,pandas,dataframe,slice,Python,Pandas,Dataframe,Slice,让我们假设下面是一个数据帧 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'],

让我们假设下面是一个数据帧

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]})
现在,我只希望从dataframe中选择某些切片,我应用的第一种方法是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是否是组合数据帧片段的最佳方法?如果是,原因是什么?

使用
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