- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想用以下 header 编写一个函数:
def split_csv(file, sep=";", output_path=".", nrows=None, chunksize=None, low_memory=True, usecols=None):
如您所见,我使用的参数与 pd.read_csv
中的几个参数相同。我想知道(或做)的是将有关这些参数的文档字符串从 read_csv
转发到我自己的函数,而无需复制/粘贴它们。
编辑:据我所知,没有开箱即用的现有解决方案。所以也许 build 一个是有序的。我的想法:
some_new_fancy_library.get_doc(for_function = pandas.read_csv,for_parameters = ['sep','nrows'])
会输出:
{'sep': '在文档字符串中找到的文档',
'nrows' : '在文档字符串中找到的文档', ...}
然后只需将字典的值插入到我自己的函数的文档字符串中即可
干杯
最佳答案
您可以使用正则表达式解析文档字符串并将匹配的参数返回给您的函数:
import re
pat = re.compile(r'([\w_+]+ :)') # capturing group for arguments
splitted = pat.split(pd.read_csv.__doc__)
# Compare the parsed docstring against your function's arguments and only extract the required docstrings
docstrings = '\n'.join([''.join(splitted[i: i+2]) for i, s in enumerate(splitted) if s.rstrip(" :") in split_csv.__code__.co_varnames])
split_csv.__doc__ = docstrings
help(split_csv)
# Help on function split_csv in module __main__:
#
# split_csv(file, sep=';', output_path='.', nrows=None, chunksize=None, low_memory=True, usecols=None)
# sep : str, default ','
# Delimiter to use. If sep is None, the C engine cannot automatically detect
# the separator, but the Python parsing engine can, meaning the latter will
# be used and automatically detect the separator by Python's builtin sniffer
# tool, ``csv.Sniffer``. In addition, separators longer than 1 character and
# different from ``'\s+'`` will be interpreted as regular expressions and
# will also force the use of the Python parsing engine. Note that regex
# delimiters are prone to ignoring quoted data. Regex example: ``'\r\t'``
#
# usecols : list-like or callable, default None
# Return a subset of the columns. If list-like, all elements must either
# be positional (i.e. integer indices into the document columns) or strings
# that correspond to column names provided either by the user in `names` or
# inferred from the document header row(s). For example, a valid list-like
# `usecols` parameter would be [0, 1, 2] or ['foo', 'bar', 'baz']. Element
# order is ignored, so ``usecols=[0, 1]`` is the same as ``[1, 0]``.
# To instantiate a DataFrame from ``data`` with element order preserved use
# ``pd.read_csv(data, usecols=['foo', 'bar'])[['foo', 'bar']]`` for columns
# in ``['foo', 'bar']`` order or
# ``pd.read_csv(data, usecols=['foo', 'bar'])[['bar', 'foo']]``
# for ``['bar', 'foo']`` order.
#
# If callable, the callable function will be evaluated against the column
# names, returning names where the callable function evaluates to True. An
# example of a valid callable argument would be ``lambda x: x.upper() in
# ['AAA', 'BBB', 'DDD']``. Using this parameter results in much faster
# parsing time and lower memory usage.
#
# nrows : int, default None
# Number of rows of file to read. Useful for reading pieces of large files
#
# chunksize : int, default None
# Return TextFileReader object for iteration.
# See the `IO Tools docs
# <http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking>`_
# for more information on ``iterator`` and ``chunksize``.
#
# low_memory : boolean, default True
# Internally process the file in chunks, resulting in lower memory use
# while parsing, but possibly mixed type inference. To ensure no mixed
# types either set False, or specify the type with the `dtype` parameter.
# Note that the entire file is read into a single DataFrame regardless,
# use the `chunksize` or `iterator` parameter to return the data in chunks.
# (Only valid with C parser)
当然,这依赖于您拥有复制函数的确切参数名称。如您所见,您需要自己添加不匹配的文档字符串(例如 file
、output_path
)。
关于python - 在我正在编写的函数中使用 pandas.read_csv 文档字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54593593/
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!