【发布时间】:2021-11-13 06:39:03
【问题描述】:
我想构建一个数据查看器,利用 EXCEL 来查看 pandas DataFrame 的内容。下面是一个简单的工作示例(作为函数)。但是,我不想将其称为view(df,10),而是将其称为df.view(10) 方法,类似于使用head 的方式,例如df.head(10)。
我是 python classes 的新手。互联网上的所有示例都是定义一个新对象并为该新对象开发类。但我想我需要为现有的 pandas DataFrame 添加一个方法。我希望将此新方法存储在我自己的私有存储库中,然后我可以导入它,例如from brb import *,并能够在任意DataFrame 上使用它。
这可能吗?
import os
import numpy as np
import pandas as pd
import xlwings as xl
df = pd.DataFrame({
'id': (1,2,3,4,5,6,7,8,9,10)*10,
'year': tuple(np.arange(2011,2021))*10,
'a': np.random.choice(range(2),100),
'b': np.random.choice(range(100),100),
})
def view(df,NObs=None):
book = xl.Book()
book.sheets[0].range("A1").value = df[:NObs]
# What I have:
view(df,10)
# What I want:
df.view(10)
【问题讨论】:
-
你可以修改它。即
pd.DataFrame.view = view,然后执行此行后创建的所有数据帧都可以用df.view(10)调用。更简洁的解决方案是定义访问器对象 (pandas.pydata.org/docs/development/…),但如果您只是从类开始,我建议这太多了。 -
谢谢!这个猴子修补的东西有效。一旦我了解了更多信息,我将在稍后研究更清洁的解决方案,但我很欣赏这个链接,因为它给了我一些可以继续下去的东西。我确实尝试支持您的评论,但已经搞砸了,现在不能。对于那个很抱歉。我很欣赏这个解决方案。
标签: python pandas dataframe class oop