Панды читают csv, одновременно передавая аргументы usecols и namePython

Программы на Python
Anonymous
Панды читают csv, одновременно передавая аргументы usecols и name

Сообщение Anonymous »

При чтении файла CSV как кадра данных pandas возникает ошибка при попытке выбрать подмножество столбцов на основе исходных имен столбцов (

Код: Выделить всё

usecols=
) и переименование выбранных столбцов (

Код: Выделить всё

names=). Передача переименованных имен столбцов в usecols
работает, но для правильного выбора столбцов необходимо передать все столбцы в имена.

Код: Выделить всё

# read the entire CSV
df1a = pd.read_csv(folder_csv+'test_read_csv.csv')
# select a subset of columns while reading the CSV
df1b = pd.read_csv(folder_csv+'test_read_csv.csv', usecols=['Col1','Col3'])
# rename columns while reading the CSV
df1c = pd.read_csv(folder_csv+'test_read_csv.csv', names=['first', 'second', 'third'], header=0)

# select a subset of columns and rename them while reading the CSV;
# throws error "ValueError: Usecols do not match columns, columns expected but not found: ['Col3', 'Col1']"
df1d = pd.read_csv(folder_csv+'test_read_csv.csv', usecols=['Col1','Col3'], names=['first','third'])

# selects columns 1 and 2, calling them 1 and 3
df1e = pd.read_csv(folder_csv+'test_read_csv.csv', usecols=['first','third'], names=['first','third'])
# selects columns 1 and 3 correctly
df1f = pd.read_csv(folder_csv+'test_read_csv.csv', usecols=['first','third'], names=['first','second','third'])
Файл CSV test read_csv.csv:

Код: Выделить всё

Col1,Col2,Col3
val1a,val2a,val3a
val1b,val2b,val3b
val1c,val2c,val3c
val1d,val2d,val3d
val1e,val2e,val3e
Разве не было бы довольно распространенным вариантом использования определенных столбцов на основе исходных имен столбцов, а затем переименовывать только эти столбцы во время чтения данные?
Конечно, можно выбрать столбцы и переименовать их после загрузки всего CSV-файла:

Код: Выделить всё

df1 = df1[['Col1','Col3']]
df1.columns = ['first', 'third']
Но я не знаю, как и можно ли это интегрировать напрямую при чтении данных. То же самое справедливо и для pd.read_excel().

Подробнее здесь: https://stackoverflow.com/questions/786 ... names-args

Вернуться в «Python»