Я импортировал файл .xlsx с несколькими вкладками (около 3 миллионов строк), где заголовки столбцов существуют только на первой вкладке, а только данные без заголовков на остальных вкладках. Теперь у меня есть файл данных pandas с некоторой информацией, которую не нужно удалять;
import pandas as pd
#load in .xlsx with multiple tabs as a dataframe
filepath = "Consumption_20221111_testdata.xlsx"
df_dict = pd.read_excel(filepath, sheet_name=None, header=None)
df_all = pd.concat(df_dict.values(), ignore_index=True)
df_all = df_all.drop(columns=df_all.columns[2]) #remove column "PERIOD_ID"
df_all = df_all.drop(columns=df_all.columns[2]) #remove column "DATA_FLAG"
df_all = df_all.drop(df_all.index[-1]) #remove the last row (details of query run on SQL database that produced .xlsx which is the last tab of the .xlsx)
df_all = df_all.dropna(how='all') #remove columns that are all 'NaN'
df_all[1] = pd.to_datetime(df_all[1][1]) #convert column from object to datetime
print(df_all)
print(df_all.dtypes)
В моем кадре данных есть индекс, отмеченный для столбца и строк, но столбец даты теперь имеет дату вместо заголовка?
Мне нужно сгруппировать данные по ссылке и дате, агрегируя потребление, чтобы сравнивать месяц с месяцем, но сначала мне нужно иметь фрейм данных, на который я могу ссылаться!
df_all["Month"] = df_all[1].dt.month
df_all = df_all.groupby(by=[1, "Month"], as_index=False).agg({"CONS":sum})
df_all
привело к;
KeyError: «Столбцы ['CONS'] не существуют»
Вот предложение, использующее цепочку методов:
df_all = (
pd.concat(pd.read_excel("Consumption_20221111_testdata.xlsx",
header=None, sheet_name=None), ignore_index=True)
.T.set_index(0).T
.rename_axis(None, axis=1)
.loc[:, ["REF", "DATE", "CONS"]]
.assign(MONTH= lambda x: x["DATE"].dt.month)
.groupby(by=["DATE", "MONTH"], as_index=False).agg({"CONS":sum})
)
print(df_all)
DATE MONTH CONS
0 2022-10-12 10 5.25
NB: ввод Excel был сделан с некоторыми строками, которые вы разделили, а также с некоторыми случайными значениями.
Я получил вышеуказанную ошибку, я не уверен, что мне не хватает?
Вам нужно поставить эту строку перед кодом: import pandas as pd
ну теперь я чувствую себя глупо!
Не волнуйся, мой друг, это случается со всеми нами. Удачного кодирования ;)
Трассировка (последний последний вызов): файл "c:\Scripts\script.py", строка 2, в <module> pd.concat(pd.read_excel("Consumment_20221111_testdata.xlsx", NameError: name 'pd' is не определено. Возможно, Вы имели в виду: 'id'?