Python 可以从pandas库中读取源代码并在我自己的函数中使用吗?
背景: 我想在给定行长度的元素中分割数据帧,并对其执行计算 将允许我这样做,但似乎只使用内置函数,如示例中的Python 可以从pandas库中读取源代码并在我自己的函数中使用吗?,python,pandas,Python,Pandas,背景: 我想在给定行长度的元素中分割数据帧,并对其执行计算 将允许我这样做,但似乎只使用内置函数,如示例中的df.rolling(2,win_type='triangs').sum()。我还想绘制这些子集(我可以通过切片和一些For循环来完成,但速度有点慢) 我的发现: 从中我了解到,我可以使用pandas.DataFrame.rolling???阅读源代码,这将给我以下信息: 但尝试从这里更深入地挖掘,例如使用rolling???似乎是徒劳的: 那么,是否可以以某种方式引用pandas.D
df.rolling(2,win_type='triangs').sum()
。我还想绘制这些子集(我可以通过切片和一些For循环来完成,但速度有点慢)
我的发现:
从中我了解到,我可以使用pandas.DataFrame.rolling???
阅读源代码,这将给我以下信息:
但尝试从这里更深入地挖掘,例如使用rolling???
似乎是徒劳的:
那么,是否可以以某种方式引用pandas.DataFrame.rolling
的底层函数,或者使用Python就到此为止?我想是的,因为熊猫是用Cython或C写的,但我真的很好奇,所以我也想在这里问一下
谢谢你的建议 熊猫源代码是开源的,目前可在GitHub上获得,网址为: 您还可以在这里查看贡献者指南,了解代码的布局: 在文档中有指向文档所指代码的链接(如下图所示)
这不是关于如何阅读源代码的答案,而是关于如何解决所述问题的答案: 使用。例如,尝试
df.rolling(2,win_type='trina').apply(yourfunc,args=(),kwargs={})
从文件中,你的职责
必须从ndarray输入*args和**kwargs生成单个值
传递给函数
这是更好的方法,因为如果不是真的需要的话,您不应该使用pandas源代码并在代码中复制粘贴和编辑它(有一些错误修复,它可能在一段时间内过时,等等)。在这里,我们有可能使用已经实现的自己的函数。好消息/坏消息:你的痛苦并没有就此结束 [旁注]
很容易找不到源代码在系统中的位置,特别是如果使用像Anaconda这样的附加层。
当有疑问时,您可以在交互式shell中检查
\uuuu文件\uuuuuu
属性:
import pandas
pandas.__file__
>>> 'C:\\Users\\xy\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\pandas\\__init__.py'
[/旁注]
如果查找实际的代码段,它来自pandas/core/generic.py中的NDFrame
,在它前面有一个导入行:
from pandas.core import window as rwindow
@Appender(rwindow.rolling.__doc__)
def rolling(self, window, min_periods=None, freq=None, center=False,
win_type=None, on=None, axis=0, closed=None):
axis = self._get_axis_number(axis)
return rwindow.rolling(self, window=window,
min_periods=min_periods, freq=freq,
center=center, win_type=win_type,
on=on, axis=axis, closed=closed)
因此,您的冒险将继续在pandas/core/window.py中进行,滚动
就在最后的某个地方:
def rolling(obj, win_type=None, **kwds):
from pandas import Series, DataFrame
if not isinstance(obj, (Series, DataFrame)):
raise TypeError('invalid type: %s' % type(obj))
if win_type is not None:
return Window(obj, win_type=win_type, **kwds)
return Rolling(obj, **kwds)
所有的
窗口
,滚动
,以及它们的父类(\u窗口
,\u滚动和扩展
,\u滚动
——这一个也来自\u窗口
)在同一个文件中延伸了数千行。复制粘贴…我认为没有办法从?
获取输出,因为这只是IPython语法,在实际程序中不可用。Github是开源的。这里有其他有用的链接:谢谢!我一定会用的!伟大的如果这能满足您的需求,请考虑接受它作为答案!:)@尼科·阿尔伯斯。尽管您的建议是创建数据帧滚动窗口的一个很好的方法,但我恐怕它不能直接回答标题中所述的问题。据我所知,在这方面还有其他建议。但我绝对支持你!再次感谢你!