Pandas DataFrame 的组合与子类

2023-12-20

我正在尝试在 Python 类中创建一个名为“tilt”的方法,该方法使用 Pandas 将 DataFrame 颠倒过来。但每当我在此类创建的实例上使用此“倾斜”方法时,我都会收到此错误“该对象没有属性“iloc””。

import numpy as np
import pandas as pd

class Board():

    def __init__(self):
        pass

    def arrange(self):

        board=pd.DataFrame(np.arange(1,65).reshape(8,8),index=[1,2,3,4,5,6,7,8],columns=[1,2,3,4,5,6,7,8])
        self = board.copy()
        self.loc[1]=['BP1','BP2','BP3','BP4','BP5','BP6','BP7','BP8']
        self.loc[2]=['blR','blK','blB','bQ','bK','brB','brK','brR']
        self.loc[7]=['wlR','wlK','wlB','wK','wQ','wrB','wrK','wrR']
        self.loc[8]=['WP1','WP2','WP3','WP4','WP5','WP6','WP7','WP8']
        print(self)

    def tilt(self):
        self.iloc[::-1]
        print(self)

In .tilt(), 你用self.iloc[::-1]。但是,在此实例方法的范围内,self只是一个简单、简约的 Python 类,而不是 DataFrame。它对您对局部变量所做的操作一无所知self代替.arrange().

即使你打电话b.arrange()首先,这确实not就地修改类实例;它修改一个名为的变量的本地副本self范围内.arrange()。那是:

>>> b = Board()
>>> b.arrange()
# ...
>>> isinstance(b, pd.DataFrame)
False

看看Pandas 数据结构子类化指南 http://pandas.pydata.org/pandas-docs/stable/development/extending.html#extending-subclassing-pandas。我建议使用组合,因为实际上 Pandas 对象的子类化很快就会变得很复杂。

以下是组合的示例:

class Board(object):

    def __init__(self):
        self.board = pd.DataFrame(np.arange(1, 65).reshape(8, 8),
                                  index=np.arange(1, 9),
                                  columns=np.arange(1, 9))

    def arrange(self):
        self.board.loc[1] = ['BP1','BP2','BP3','BP4','BP5','BP6','BP7','BP8']
        self.board.loc[2] = ['blR','blK','blB','bQ','bK','brB','brK','brR']
        self.board.loc[7] = ['wlR','wlK','wlB','wK','wQ','wrB','wrK','wrR']
        self.board.loc[8] = ['WP1','WP2','WP3','WP4','WP5','WP6','WP7','WP8']
        return self.board

    def tilt(self):
        return self.board.iloc[::-1]

Usage:

>>> b = Board()
>>> b.arrange()
     1    2    3    4    5    6    7    8
1  BP1  BP2  BP3  BP4  BP5  BP6  BP7  BP8
2  blR  blK  blB   bQ   bK  brB  brK  brR
3   17   18   19   20   21   22   23   24
4   25   26   27   28   29   30   31   32
5   33   34   35   36   37   38   39   40
6   41   42   43   44   45   46   47   48
7  wlR  wlK  wlB   wK   wQ  wrB  wrK  wrR
8  WP1  WP2  WP3  WP4  WP5  WP6  WP7  WP8
>>> b.tilt()
     1    2    3    4    5    6    7    8
8  WP1  WP2  WP3  WP4  WP5  WP6  WP7  WP8
7  wlR  wlK  wlB   wK   wQ  wrB  wrK  wrR
6   41   42   43   44   45   46   47   48
5   33   34   35   36   37   38   39   40
4   25   26   27   28   29   30   31   32
3   17   18   19   20   21   22   23   24
2  blR  blK  blB   bQ   bK  brB  brK  brR
1  BP1  BP2  BP3  BP4  BP5  BP6  BP7  BP8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas DataFrame 的组合与子类 的相关文章

  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 在可编辑的QSqlQueryModel中实现setEditStrategy

    这是后续这个问题 https stackoverflow com questions 49752388 editable qtableview of complex sql query 在那里 我们创建了 QSqlQueryModel 的可
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 无法截取宽度为 0 的屏幕截图

    我正在尝试截取 Bootstrap 模态内元素的屏幕截图 经过一番努力 我终于想出了这段代码 driver get https enlinea sunedu gob pe driver find element by xpath div c
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back

随机推荐