Выберите несколько столбцов в DataFrame Pandas. Slice + Select - PullRequest
0 голосов
/ 16 июня 2020

У меня есть DataFrame с почти 100 столбцами

Мне нужно выбрать col2 в col4 и col54. Как мне это сделать? Я пробовал:

df = df.loc[:,'col2':col4'] 

, но не могу добавить col54

Ответы [ 3 ]

2 голосов
/ 16 июня 2020

Вы можете сделать это двумя разными способами:

Используя тот же формат, который вы сейчас пытаетесь использовать, я думаю, что соединение col54 будет необходимо.

df = df.loc[:,'col2':'col4'].join(df.loc[:,'col54'])

.

Другой метод, учитывая, что col2 близок к col4, - это сделать

df = df.loc[:,['col2','col3','col4', 'col54']]

или просто

df = df[['col2','col3','col4','col54']]
0 голосов
/ 16 июня 2020

Вы используете объект list или pandas.IndexSlice

 In [1]: import pandas as pd

 In [2]: df = pd.DataFrame(1,index=[0,1,2],columns=["col1","col2","col3","col4","col5"])

 In [3]: df 

 Out[3]:                                                                                                                    
    col1  col2  col3  col4  col5                                                                                         
 0     1     1     1     1     1                                                                                         
 1     1     1     1     1     1                                                                                         
 2     1     1     1     1     1   

 In [4]: df.loc[:,['col1','col2','col4','col5']]

 Out[4]:                                                                                                                         
    col1  col2  col4  col5                                                                                               
 0     1     1     1     1                                                                                               
 1     1     1     1     1                                                                                               
 2     1     1     1     1 

 In [5]: slicer = pd.IndexSlice  

 In [6]: df.loc[:,slicer["col3":"col5"]]   

 Out[6]:                                                                                                                    
    col3  col4  col5                                                                                                     
 0     1     1     1                                                                                                     
 1     1     1     1                                                                                                     
 2     1     1     1 

edit: Я вижу, я неправильно прочитал OP. Это немного сложно. Вы можете получить 'Col2','Col3','Col4', используя pandas.IndexSlice, как я продемонстрировал выше. Я пытаюсь понять, как включить сюда 'Col54'.

0 голосов
/ 16 июня 2020

Вы можете просто сделать это:

df = df.loc[:,['col2','col4','col54']] 

loc также принимает имена столбцов как список.

Или это:

df[['col2','col4','col54']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...