Python 3.x 属性错误:';数据帧';对象没有属性';网络名称';

Python 3.x 属性错误:';数据帧';对象没有属性';网络名称';,python-3.x,pandas,Python 3.x,Pandas,python 3.7 任务。根据以下两个条件在接收日期框中添加新列: 如果“网络名称”列中的值等于列表中的一个,且“ECELL类型”列中的值为LTE,则将该值从ENODEB_名称列分配给共享列 import csv import os import pandas as pd import datetime import numpy as np from time import gmtime, strftime WCOUNT=strftime("%V", gmtime()) WCOUNT = i

python 3.7 任务。根据以下两个条件在接收日期框中添加新列: 如果“网络名称”列中的值等于列表中的一个,且“ECELL类型”列中的值为LTE,则将该值从ENODEB_名称列分配给共享列

import csv
import os
import pandas as pd
import datetime
import numpy as np

from time import gmtime, strftime
WCOUNT=strftime("%V", gmtime())
WCOUNT = int(WCOUNT)
WCOUNT_last = int(WCOUNT)-1
os.environ['NLS_LANG'] = 'Russian.AL32UTF8'

cell_file_list=pd.read_excel('cdt_config.xlsx',sheet_name ='cdt_config',index_col='para_name')
filial_name_list=pd.read_excel('FILIAL_NAME.xlsx')
gcell_file_name1=cell_file_list.para_value.loc['ucell_file_name']
ecell_file_name=cell_file_list.para_value.loc['ecell_file_name']
cols_simple=['RECDATE','REGION_PHOENIX_NAME','NET_NAME','CELL_NAME_IN_BSC','ENODEB_NAME','ECELL_TYPE','NRI_ADDRESS', 'NRI_BS_NUMBER','NRI_SITEID','STOPTIME',  ]
cols_export=['GSM', 'UMTS', 'LTE', 'TOTAL', 'NWEEK', 'SHARING' ]
ecell_df=df = pd.read_csv(ecell_file_name, sep=",",encoding='cp1251',
                dtype={'NRI_SITEID': str})

ecell_df=ecell_df.rename(columns={"RECDATE.DATE": "RECDATE"})
ecell_df=ecell_df.rename(columns={"ECELL_MNEMONIC": "CELL_NAME_IN_BSC"})

#replace ","
ecell_df.STOPTIME=pd.to_numeric(ecell_df.STOPTIME.replace(',', '', regex=True), errors='coerce')/3600
ecell_df=ecell_df[cols_simple]
#pivot ecell table
ecell_sum_df=pd.pivot_table(ecell_df,values='STOPTIME',index=['RECDATE','NRI_SITEID','REGION_PHOENIX_NAME','NET_NAME','ENODEB_NAME','ECELL_TYPE'],aggfunc='sum')
ecell_sum_df=ecell_sum_df.fillna(0)
#create a empty column with the same index as the pivot table.
ecell_export_df= pd.DataFrame(index=ecell_sum_df.index.copy())
ecell_export_df=ecell_export_df.assign(LTE=0)
ecell_export_df.LTE=ecell_sum_df.STOPTIME
ecell_export_df['SHARING'] = 0
ecell_export_df.SHARING.replace(ecell_export_df.NET_NAME in filial_name_list, ENODEB_NAME,inplace=True)
print(ecell_export_df)
#print (ecell_export_df)
del ecell_df
del ecell_sum_df

export_df=pd.concat([ecell_export_df],join='outer',axis=1)
export_df=export_df.fillna(0)
export_df['TOTAL'] = export_df.sum(axis=1)
export_df['NWEEK'] = WCOUNT_last

del ecell_export_df
#################################################
以下是错误消息:

Traceback (most recent call last):
File "C:/Users/PycharmProjects/ReportCDT/CDT 4G_power pivot.py", line 43, in <module>
ecell_export_df.SHARING.replace(ecell_sum_df.NET_NAME in filial_name_list, ENODEB_NAME,inplace=True)
File "C:\Users\vavrumyantsev\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\generic.py", line 5067, in __getattr__
eturn object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'NET_NAME'
回溯(最近一次呼叫最后一次):
文件“C:/Users/PycharmProjects/ReportCDT/cdt4g_power pivot.py”,第43行,在
ecell\u export\u df.SHARING.replace(子系统名称列表中的ecell\u sum\u df.NET\u名称,ENODEB\u名称,inplace=True)
文件“C:\Users\vavrumyantsev\AppData\Local\Programs\Python37\lib\site packages\pandas\core\generic.py”,第5067行,位于\uu getattr中__
eturn对象。\uuuu getattribute\uuuu(self,name)
AttributeError:“DataFrame”对象没有属性“NET\u NAME”
您的回溯包含:DataFrame对象没有属性NET\u名称, 实际上,这意味着此数据帧没有此名称的

此消息与ecell_sum_df.NET_名称有关(也包含在 回溯),让我们看看您是如何创建这个数据帧的(稍微 已重新格式化以确保可读性):

请注意,NET_名称是索引列表的一部分,因此在DataFrame中 创建它是多索引的一部分,而不是“普通”列。 因此Python正确地显示了这条消息

也许您应该将此级别的多索引移动到“普通”列?

您的回溯包含:DataFrame对象没有属性NET\u名称, 实际上,这意味着此数据帧没有此名称的

此消息与ecell_sum_df.NET_名称有关(也包含在 回溯),让我们看看您是如何创建这个数据帧的(稍微 已重新格式化以确保可读性):

请注意,NET_名称是索引列表的一部分,因此在DataFrame中 创建它是多索引的一部分,而不是“普通”列。 因此Python正确地显示了这条消息


也许您应该将这一级别的多索引移到“正常”列?

我不太明白怎么做?像常规列一样查看数据透视表结果?您应该通过正确的索引级别(此列出现的位置)调用reset_index。在网上搜索熊猫下降指数级别,你会发现很多例子。我不太明白怎么做?像常规列一样查看数据透视表结果?您应该通过正确的索引级别(此列出现的位置)调用reset_index。在网上搜索熊猫下降指数级别,你会发现很多例子。
ecell_sum_df=pd.pivot_table(ecell_df, values='STOPTIME',\
    index=['RECDATE', 'NRI_SITEID', 'REGION_PHOENIX_NAME', 'NET_NAME',
    'ENODEB_NAME', 'ECELL_TYPE'], aggfunc='sum')