AttributeError: 'collections.OrderedDict' object has no attribute 'value_counts'
AttributeError: 'collections.OrderedDict' object has no attribute 'value_counts'
我收到一条错误消息,似乎无法弄清楚。当我尝试计算从第 4 行开始的 ws1 F 列中出现值 0 的实例数,然后将其写到 ws3 M 列第 2 行时,就会发生这种情况。以前有人遇到过这个错误吗?
Error
counts = series.value_counts()
AttributeError: 'collections.OrderedDict' object has no attribute 'value_counts'
import openpyxl as xl
import os
import pandas as pd
input_dir = 'C:\work\comparison\NNM'
template = 'C:\work\comparison\template.xlsx'
summary = 'C:\work\comparison\summary.xlsx'
newFile = 'Comparison.xlsx'
files = [file for file in os.listdir(input_dir)
if os.path.isfile(file) and file.endswith(".xlsx")]
wb3 = xl.load_workbook(template)
ws3 = wb3.worksheets[0]
i=0
ii=0
for file in files:
input_file = os.path.join(input_dir, file)
wb1=xl.load_workbook(input_file)
ws1=wb1.worksheets[0]
series = pd.read_excel(input_file, sheetname=None, skiprows = [5], usecols = "F", squeeze = True)
counts = series.value_counts()
z = counts[0]
wb2 = xl.load_workbook(summary)
ws2 = wb2.worksheets[1]
ws3[f'A{i+2}']=ws1['A1'].value[28:]
ws3[f'D{i+2}']=ws1['B4'].value
ws3[f'E{i+2}']=ws1['D4'].value
ws3[f'I{i+2}']=ws1['B'][-1].value
ws3[f'J{i+2}']=ws1['D'][-1].value
ws3[f'O{i+2}']=ws1['E'][-1].value
ws3[f'N{i+2}']=ws2[f'I{ii+6}'].value
ws3[f'M{i+2}']=z
i += 1
ii +=1
wb3.save(newFile)
当您使用 sheet_name=None
时,您将得到一个 dict
对象,而不是 Series
或 DataFrame
对象。
并且 dict
对象没有方法 .value_counts()
。
在你的情况下,你可以这样做:
series = pd.read_excel(input_file, sheetname='ur_sheet_name', skiprows = [5], usecols = "F", squeeze = True)
或者:
series = pd.read_excel(input_file,skiprows = [5], squeeze = True)['title_of_column_F']
我收到一条错误消息,似乎无法弄清楚。当我尝试计算从第 4 行开始的 ws1 F 列中出现值 0 的实例数,然后将其写到 ws3 M 列第 2 行时,就会发生这种情况。以前有人遇到过这个错误吗?
Error
counts = series.value_counts()
AttributeError: 'collections.OrderedDict' object has no attribute 'value_counts'
import openpyxl as xl
import os
import pandas as pd
input_dir = 'C:\work\comparison\NNM'
template = 'C:\work\comparison\template.xlsx'
summary = 'C:\work\comparison\summary.xlsx'
newFile = 'Comparison.xlsx'
files = [file for file in os.listdir(input_dir)
if os.path.isfile(file) and file.endswith(".xlsx")]
wb3 = xl.load_workbook(template)
ws3 = wb3.worksheets[0]
i=0
ii=0
for file in files:
input_file = os.path.join(input_dir, file)
wb1=xl.load_workbook(input_file)
ws1=wb1.worksheets[0]
series = pd.read_excel(input_file, sheetname=None, skiprows = [5], usecols = "F", squeeze = True)
counts = series.value_counts()
z = counts[0]
wb2 = xl.load_workbook(summary)
ws2 = wb2.worksheets[1]
ws3[f'A{i+2}']=ws1['A1'].value[28:]
ws3[f'D{i+2}']=ws1['B4'].value
ws3[f'E{i+2}']=ws1['D4'].value
ws3[f'I{i+2}']=ws1['B'][-1].value
ws3[f'J{i+2}']=ws1['D'][-1].value
ws3[f'O{i+2}']=ws1['E'][-1].value
ws3[f'N{i+2}']=ws2[f'I{ii+6}'].value
ws3[f'M{i+2}']=z
i += 1
ii +=1
wb3.save(newFile)
当您使用 sheet_name=None
时,您将得到一个 dict
对象,而不是 Series
或 DataFrame
对象。
并且 dict
对象没有方法 .value_counts()
。
在你的情况下,你可以这样做:
series = pd.read_excel(input_file, sheetname='ur_sheet_name', skiprows = [5], usecols = "F", squeeze = True)
或者:
series = pd.read_excel(input_file,skiprows = [5], squeeze = True)['title_of_column_F']