Поиск ответов на вопрос «dataframe. at TypeError: только целочисленные скалярные массивы могут быть преобразованы в скалярный индекс» привел к ответу: «Мы не смогли ничего найти для dataframe. at typeerror: только целочисленные скалярные массивы могут быть преобразованы в скалярные значения». index».
Поиск с менее строгими правилами дал результаты, которые потребовали от меня поиска по запросу «.at» тоже ничего не дали. Конечно, это может быть связано с моими условиями поиска.
Может ли кто-нибудь точно объяснить, что это значит, в терминах, понятных непрограммисту?
"свойство DataFrame.at[source]: TypeError: только целочисленные скалярные массивы
могут быть преобразованы в скалярный индекс"
На веб-сайте pandas указано следующее:
pandas.DataFrame.at свойство DataFrame.at[source] Доступ к одному
значению для пара меток строка/столбец.
Это кажется очевидным и, следовательно, простым в использовании. Однако следующий фрагмент кода:
col = str(currentyr)
print('col = ' + str(col))
row = str(currentmonth) + 'UTtotal'
print('row = ' + str(row))
DTduration = df_total.at[row, col]
print('row / col (' + str(row) + ' / ' + str(col) + ') =\n' + str(DTduration))
выдает следующую ошибку:
"TypeError Traceback (most recent call last)
Cell In[1], line 269
266 monthlyUT()
268 #deal with monthly downtimes
--> 269 monthlyDT(faultindexfirst, faultindexlast)
271 framenum += 1
273 elif framestartyear == currentyr & frameendyear == currentyr + 1:
274 #the currently selected frame straddles two years
Cell In[1], line 46
44 print('row = ' + str(row))
45 # DTduration = df_total.loc[row, col]
---> 46 DTduration = df_total.at[row, col]
47 print('row / col (' + str(row) + ' / ' + str(col) + ') =\n' + str(DTduration))
48 row = str(currentmonth) + 'Eventstotal'"
faultindexfirst, errorindexlast, currentyr и currentmonth — целые числа. Я пытаюсь получить доступ к определенным данным в кадре данных:
2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 \
UTtotal 2311.933333 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
DTtotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Eventstotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1UTtotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1DTtotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1Eventstotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
.
.
.
11Eventstotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12UTtotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12DTtotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12Eventstotal NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
В этом случае мне нужно заполнить эту таблицу действительными данными, но сайт pandas не предоставляет никакой информации, которую я понимаю достаточно, чтобы устранить эту ошибку. Операторы печати успешно выполнили следующее:
col = 2013
row = 9UTtotal
Минимально воспроизводимый пример:
import pandas
import os
import numpy as np
from pathlib import Path
#import matplotlib.pyplot as plt
#import matplotlib.dates as mdates
#from matplotlib.patches import Rectangle
from datetime import date
from datetime import time
from datetime import datetime
import array
def monthlyDT(firstidx, lastidx):
#this routine handles the monthly downtime data totaling and copying to the table
print('entered downtimes()')
print('\tthe first downtime timestamp = ' + str(DTs[firstidx]))
print('\tthe last downtime timestamp = ' + str(DTs[lastidx]))
#retrieve the current monthly DT duration and number of events totals from the table
print('row indices:\n' + str(df_total.index))
print('column headers: \n' + str(df_total.columns))
col = str(currentyr)
print('col = ' + str(col))
row = str(currentmonth) + 'UTtotal'
print('row = ' + str(row))
DTduration = df_total.at[row, col]
print('row / col (' + str(row) + ' / ' + str(col) + ') =\n' + str(DTduration))
return()
#setup working arrays to hold the datasets
DTs = np.array([1.378854180000000000e+09, 1.378904520000000000e+09, 1.378957920000000000e+09, 1.378968180000000000e+09])
DTe = np.array([1.378858140000000000e+09, 1.378908000000000000e+09, 1.378958040000000000e+09, 1.378968240000000000e+09])
#build the 'year' column names array
colname = []
y = 2013
currentyr = 2013
yrend = 2024
currentmonth = 9
while y
Подробнее здесь: https://stackoverflow.com/questions/791 ... -can-be-co
Что означает «DataFrame.at[source]: TypeError: только целочисленные скалярные массивы могут быть преобразованы в скалярн ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение