python中如何查询method 的功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何查询method 的功能?相关的知识,希望对你有一定的参考价值。

比如我要查询math这个built-in module的话,我只用输入help(math)就可以了,但是如果我对于find()的用法:str.find()不熟悉,想要查询find这个method的用法,要怎样查询呢?

查询用help
>>>help(obj.method) #通用查询方法 对象名obj.方法名method

本例
>>>help("".method) #""为空字符串,但已经是一个string对象了
参考技术A >>> help('a'.find)
Help on built-in function find:
find(...)
S.find(sub [,start [,end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
>>>

如何在熊猫(python)中定义自己的填充方法参数?

【中文标题】如何在熊猫(python)中定义自己的填充方法参数?【英文标题】:How to define your own fill method parameter in pandas (python)? 【发布时间】:2017-03-31 20:57:21 【问题描述】:

一些 DataFrame 和 Series 方法有 method 参数。例如:

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

并且方法参数可以取以下值:None, 'backfill'/'bfill', 'pad'/'ffill', 'nearest'

但是我想 def 某种填充功能,它反过来定义如何使用系列中已经存在的值来填充空白,以便它可以通过以下方式使用:

df = DataFrame.fillna(method='new_method')

【问题讨论】:

你能具体说明你想要什么吗?据我了解,听起来您需要对fillna 方法进行猴子修补,或修改源代码,因为method 参数不接受任意函数。 @juanpa.arrivillaga 是的,我认为正确的方法是修改源代码。好吧,例如我想要一个函数,它可以用系列中最接近的值的平均值来填补空白。我的意思是这样的:1 NaN 3 --> 1 2 3。 是否有某些原因必须能够将它与fillna 方法一起使用?编写自己的函数并保留源代码可能会更好。 @juanpa.arrivillaga 不是真的。但我认为可以将它与所有其他方法一起使用......比如重新索引等。你为什么这么认为?据我所知,当您想要定义一些自定义操作时,修改源代码是一种常见的做法。 在不了解所有后果的情况下更改复杂库的代码通常不是一个好主意。当然你可以尝试,但可能是作为最后的手段,或者当你想真正开始为 pandas 做出贡献时。 【参考方案1】:

在您非常具体的情况下(最接近值的平均值),您可以这样做:

import pandas as pd
import numpy as np

col1 = np.array([0, 1, np.nan, 4])
col2 = np.array([0, np.nan, 2, 5])

df = pd.DataFrame("col1" : col1, "col2" : col2)

# Trick: average forward and backward fill
df = 0.5 * (df.fillna(method="bfill") + df.fillna(method="ffill"))

通过平均后向和前向填充,您将获得平均值,同时保持所有其他值(但舍入误差除外)不变。但它当然不适用于第一行和最后一行。 (但如果可以接受的话,你可以再次使用 ffill 和 bfill)

【讨论】:

事实上,这更像是一个好奇的问题。我只是想知道是否可以重新定义,例如,something 以使我能够设置自定义方法参数。我知道,几乎总是可以找到解决问题的方法。

以上是关于python中如何查询method 的功能?的主要内容,如果未能解决你的问题,请参考以下文章

使用HashMap,put()表示放置元素,get()表示取元素

Linq 到实体子查询

不支持 linq to nhibernate compareto

django实现查询功能

LINQ 查询到 LINQ 方法;为啥我需要 CBool​​?

Delphi中如何实现查询功能:如下介绍