Другой результат между concat и np_r при объединении фрагментов кадра данных

Предположим, что это кадр данных

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 лучшим способом объединения фрагментов кадров данных, и если да, то почему?


person Nicola    schedule 18.07.2018    source источник


Ответы (1)


Используйте 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
person rafaelc    schedule 18.07.2018