Pandas dataframe не может преобразовать тип данных столбцов из объекта в строку для дальнейшей работы

Это мой рабочий код, который загружает файл Excel с веб-сайта. Это займет около 40 секунд.

Запустив этот код, вы заметите, что столбцы Key1, Key2 и Key3 являются объектными dtypes. Я очистил фрейм данных таким образом, чтобы ключи key1 и key2 имели только буквенно-цифровые значения. Тем не менее панды хранят его как объект dtype. Мне нужно объединить (как в MS Excel) Key1 и Key2, чтобы создать отдельный столбец с именем deviceid. Я понимаю, что не могу соединить эти два столбца, поскольку они являются объектными типами. Как бы я преобразовал в строку, чтобы я мог создать свой новый столбец?

import pandas as pd
import urllib.request
import time

start=time.time()
url="https://www.misoenergy.org/Library/Repository/Market%20Reports/20170816_da_bcsf.xls"
cnstsfxls = urllib.request.urlopen(url)
xlsf = pd.ExcelFile(cnstsfxls)
dfsf = xlsf.parse("Sheet1",skiprows=3)
dfsf.drop(dfsf.index[len(dfsf)-1],inplace=True)
dfsf.drop(dfsf[dfsf['Device Type'] == 'UN'].index, inplace=True)
dfsf.drop(dfsf[dfsf['Device Type'] == 'UNKNOWN'].index, inplace=True)
dfsf.drop(['Constraint Name','Contingency Name', 'Constraint Type','Flowgate Name'],axis=1, inplace=True)
end=time.time()
print("The entire process took - ", end-start, " seconds.")

1 ответ

Я могу упустить момент здесь. Но если то, что вы хотите сделать, это построить столбец, где, например, deviceid = RCH417 когда Key1 = RCH а также Key2 = 417, затем dfsf['deviceid'] = dfsf['Key1'] + dfsf['Key2'] будет работать нормально, даже если оба столбца имеют тип объекта.

Попробуй это:

# Check value types
dfsf.dtypes

# Add your desired column
dfsf['deviceid'] = dfsf['Key1']  + dfsf['Key2']

# Inspect columns of interest
keep = ['Key1', 'Key2', 'deviceid']
df_keys = dfsf[keep]
print(df_keys.dtypes)

введите описание изображения здесь

print(df_keys.head())

введите описание изображения здесь

Другие вопросы по тегам