Если вы хотите извлечь 5,10 ...
newdf <- df[c(rep(FALSE,4),TRUE), ]
Если 1,6,11,
newdf <- df[c(TRUE,rep(FALSE,4)), ]
df.drop(columns='DSP Code')
этот бит не работает, потому что вы не присваиваете его новому df
df = df.drop(columns='DSP Code')
Вы также можете просто сохранить интересующие вас столбцы, скопировав их во второй кадр данных. [113 ]
Вы можете сделать это следующим образом:
df.drop(['Col_1', 'col_2'], axis=1, inplace=True)
ИЛИ:
df = df.drop(columns=colnames)
Как предлагается в разделе комментариев, используйте usecols
, который предоставляет своего рода фильтр для обрезки раздела столбца. использование только тех столбцов, которые требуются, остальные не будут процессами, и, следовательно, эффективность будет увеличена, а потребление ресурсов также будет меньше:
df = pandas.read_csv('SYB_M_20171001_20171031.txt', encoding='utf-8', sep='\t', usecols=["col1", "col2", "col3"],skiprows=3)
Согласно pandas.DataFrame.drop , он возвращает фрейм данных, если вы не выполняете операцию на месте.
Возвращает:
отброшено: pandas.DataFrameinplace: bool, по умолчанию False
Если True, выполнить операцию на месте и вернуть None. blockquote>
Либо сделайте это на месте:
df.drop(columns=['DSP Code'], inplace=True)
, либо сохраните возвращенный фрейм данных:df=df.drop(columns=['DSP Code'])