【问题标题】:AttributeError: 'DataFrame' object has no attribute 'value_counts' [duplicate]AttributeError:“DataFrame”对象没有属性“value_counts”[重复]
【发布时间】:2019-12-12 10:05:14
【问题描述】:

我这周开始使用 pandas,如果我问了一个非常明显的问题,请原谅我。我试图让 pandas 循环遍历我的 Excel wb 中的所有工作表,以通过 value_counts 提取特定列 F 列的出现次数。

之前我使用了 value_counts 并输入了工作表的特定名称,它可以提取该 1 个工作表的值计数。但是,当我将工作表名称替换为 df1 时,它就停止工作了。

df = pd.ExcelFile("filepath.xlsx")
for df1 in df.sheet_names:
    df2 = pd.read_excel("filepath.xlsx", sheet_name=df1, usecols="F")
    df2.dropna(inplace=False)
    print (df2.value_counts())

我希望输出是唯一值及其出现次数,但它会返回:

AttributeError: 'DataFrame' 对象没有属性 'value_counts'

有人可以帮帮我吗?

【问题讨论】:

  • documentationSeries 提到了此功能。如果您想为多列获取它,请使用applySome discussions about
  • @Trenton_M 嗨!此解决方案是否适用于工作簿中所有 Excel 工作表中的特定列?
  • 在循环中用df2.apply(pd.Series.value_counts)替换df2.value_counts()
  • @Trenton_M tks man!

标签: python excel pandas


【解决方案1】:

您在源 Excel 文件中的每个工作表上运行一个循环。 没关系,但您应该将 value_counts 分别应用于每个 DataFrame(从每张纸上读取)。

关于变量名的说明:df 仅用于 DataFrames。 Excel 文件工作表名称 都不是 DataFrames。

所以循环应该是这样的:

exFile = pd.ExcelFile("filepath.xlsx")
for sheet in exFile.sheet_names:
    df = pd.read_excel("filepath.xlsx", sheet_name=sheet, usecols="F")
    df.dropna(inplace=True)
    print('Sheet', sheet)
    print(df.apply(pd.Series.value_counts))

【讨论】:

  • 天哪,我的印象是所有 pd 都需要 df,就像整个 wk LOL 一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 2017-01-24
  • 2018-10-10
  • 2019-08-18
  • 2021-01-20
  • 2020-05-16
  • 2018-10-04
相关资源
最近更新 更多