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