преобразование из чтения CSV в Excel - панды / Python - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в этом, так что будьте осторожны со мной!

У меня есть код, который отлично работает с CSV-файлами, но я хочу преобразовать его в файлы Excel, чтобы иметь несколько вкладок на файл.

Вот рабочий оригинал

import numpy as np
import pandas as pd
import csv 
pd.options.mode.chained_assignment = None

#the whole portfolio
num_of_contracts = 1418
num_of_simul = 10000

contract_info_df = pd.read_csv('contract_info..csv', encoding='latin-1')
contract_info_df = contract_info_df.set_index(['Contract Identifier'])
toy_contract = contract_info_df.iloc[:num_of_contracts, :]
toy_contracts_list = contract_info_df.iloc[:num_of_contracts, :].index.tolist()
toy_contracts_list = (list(map(str, toy_contracts_list)))
toy_contract.index = toy_contracts_list



loss_df = pd.read_csv('losstable.csv')
loss_table = loss_df.loc[:,toy_contracts_list][:num_of_simul]
loss_table['row_sum'] = loss_table.sum(axis = 1)  

Вот моя попытка

import numpy as np
import pandas as pd
pd.options.mode.chained_assignment = None

#the whole portfolio
num_of_contracts = 162
num_of_simul = 10000

xls = pd.ExcelFile('contract_info.xlsx')
df1 = pd.read_excel(xls, 'contract_info') #worksheetname

contract_info_df = df1.set_index(['Contract Identifier'])
toy_contract = contract_info_df.iloc[:num_of_contracts, :]
toy_contracts_list = contract_info_df.iloc[:num_of_contracts, :].index.tolist()
toy_contracts_list = (list(map(str, toy_contracts_list)))
toy_contract.index = toy_contracts_list


xls = pd.ExcelFile('losstable.xlsx') 
loss_df = pd.read_excel(xls, 'losstable') #woorksheet name
loss_table = loss_df.loc[:,toy_contracts_list][:num_of_simul]

Ошибка появляется в этой последней строке, она не может найти значения 'toy_contracts_list' в [колонках]

В чем моя проблема?

Спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Похоже, pd.read_csv('losstable.csv') загружает CSV с 'Str' для столбцов. Пока df1 = pd.read_excel(xls, 'losstable') пытается определить dtype столбцов. В этом случае он оставляет столбец типа d как int.

Удалите эту строку из вашего кода:

toy_contracts_list = (list(map(str, toy_contracts_list)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...