python使用pandas的交叉表crosstab出现问题

发布于 2022-09-03 07:29:27 字数 1774 浏览 15 评论 0

对数据分析时使用到pandas,下面的代码是从数据库中获取数据再转换成DataFrame结构

sql = 'select * from content;'
cur.execute(sql)
rows = cur.fetchall()
datas = []
for data in rows:
    datas.append(data)
frame = DataFrame(datas)

数据库的表结构如下:
图片描述

下面就是数据操作的代码:

def get_education():
    print(frame)
    print(frame[10])
    print(frame[8])
    print(type(frame[10]))
    city_education = pd.crosstab(frame[10], frame[8], margins=True).sort_values(by='All', ascending=False)[:11]
    print(city_education)

然后就一直出现错误:

<class 'pandas.core.series.Series'>
Traceback (most recent call last):
  File "D:/python爬虫/python爬虫/爬取拉钩.py", line 301, in <module>
    get_education()
  File "D:/python爬虫/python爬虫/爬取拉钩.py", line 249, in get_education
    city_education = pd.crosstab(frame[10], frame[8], margins=True).sort_values(by='All', ascending=False)[:11]
  File "F:\Python35\lib\site-packages\pandas\tools\pivot.py", line 462, in crosstab
    aggfunc=len, margins=margins, dropna=dropna)
  File "F:\Python35\lib\site-packages\pandas\tools\pivot.py", line 158, in pivot_table
    margins_name=margins_name)
  File "F:\Python35\lib\site-packages\pandas\tools\pivot.py", line 180, in _add_margins
    if margins_name in table.index.get_level_values(level):
  File "F:\Python35\lib\site-packages\pandas\indexes\base.py", line 2025, in get_level_values
    self._validate_index_level(level)
  File "F:\Python35\lib\site-packages\pandas\indexes\base.py", line 1163, in _validate_index_level
    (level + 1))
IndexError: Too many levels: Index has only 1 level, not 11

求解答,刚接触pandas,但也参考过别人的,他也是这样写的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

祁梦 2022-09-10 07:29:27

直接用pandas就可以读取

import pandas as pd

pd.read_sql("select * from content", con)# con相当于你上面的cur,然后,注意,sql末尾不要加分号
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文