小编Cyt*_*rak的帖子

计算有多少参数作为位置传递

如果我有一个功能

def foo(x, y):
    pass
Run Code Online (Sandbox Code Playgroud)

我如何从函数内部判断y是按位置传递还是使用其关键字传递?

我想要类似的东西

def foo(x, y):
    if passed_positionally(y):
        print('y was passed positionally!')
    else:
        print('y was passed with its keyword')
Run Code Online (Sandbox Code Playgroud)

所以我得到

>>> foo(3, 4)
y was passed positionally
>>> foo(3, y=4)
y was passed with its keyword
Run Code Online (Sandbox Code Playgroud)

我意识到我最初没有指定这一点,但是可以在保留类型注释的同时做到这一点吗?到目前为止的最佳答案建议使用装饰器 - 但是,这不会保留返回类型

python function parameter-passing

39
推荐指数
3
解决办法
3596
查看次数

使用熊猫滚动相关时如何处理不一致的结果?

让我先说一下,为了重现这个问题,我需要一个大数据,这是问题的一部分,我无法预测什么时候会出现这种特殊性。无论如何,数据太大(~13k 行,2 列)无法粘贴到问题中,我在帖子末尾添加了一个 pastebin 链接


在过去的几天里,我遇到了一个奇怪的问题pandas.core.window.rolling.Rolling.corr。我有一个数据集,我试图在其中计算滚动相关性。这就是问题:

在计算window_size=100两列 ( aand b)之间的滚动 ( ) 相关性时:一些索引(一个这样的索引是12981)给出接近的0值(顺序1e-10),但理想情况下它应该返回nanor inf,(因为一列中的所有值都是常数)。但是,如果我只是计算与该索引有关的独立相关性(包括所述索引的最后 100 行数据),或者对较少数量的行(例如 300 或 1000 而不是 13k)执行滚动计算,我得到正确的结果( naninf。)

期待:

>>> df = pd.read_csv('sample_corr_data.csv') # link at the end,  ## columns = ['a', 'b']
>>> df.a.tail(100).value_counts()

 0.000000    86
-0.000029     3
 0.000029     3
-0.000029     2
 0.000029     2
-0.000029     2
 0.000029     2
Name: a, dtype: int64 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas rolling-computation pearson-correlation

8
推荐指数
1
解决办法
356
查看次数

从关键字参数生成参数字典

我正在尝试生成一个包含非None参数当前调用的名称和值的字典。这非常感觉应该是内置的,但在 Python 文档中找不到任何能完全做到这一点的东西。

\n

例如,当

\n
def foo(limit=None, offset=None, lower_bound=None, upper_bound=None):\n\n   # code to generate dict of non-`None` named arguments (see below)\n\n   ...  # other things happen later\n
Run Code Online (Sandbox Code Playgroud)\n

使用参数调用foo(limit=5, lower_bound=100),我需要以下字典:{limit=5, lower_bound=100}

\n

有什么东西可以方便地为我做到这一点吗?

\n
\n

潜在的解决方案

\n

到目前为止,我已经研究了以下内容,所有这些似乎都有缺陷:

\n
    \n
  1. 手动创建列表(它的缺点是有更多地方可以进行更改,例如,参数名称已更改)
  2. \n
\n
def foo(limit=None, offset=None, lower_bound=None, upper_bound=None):\n    keys = (\'limit\', \'offset\', \'lower_bound\', \'upper_bound\')\n    values = (limit, offset, lower_bound, upper_bound)\n    magic_dict = {k: v for k, v in zip(keys, values) if v is …
Run Code Online (Sandbox Code Playgroud)

python function parameter-passing

7
推荐指数
1
解决办法
751
查看次数

列表中是否有自引用列表或循环引用的用法,例如。将列表附加到自身

因此,如果我有一个列表a并附a加到它,我将得到一个包含它自己的引用的列表。

>>> a = [1,2]
>>> a.append(a)
>>> a
[1, 2, [...]]
>>> a[-1][-1][-1]
[1, 2, [...]]
Run Code Online (Sandbox Code Playgroud)

这基本上会导致看似无限的递归。

不仅在列表中,在字典中也是如此:

>>> b = {'a':1,'b':2}
>>> b['c'] = b
>>> b
{'a': 1, 'b': 2, 'c': {...}}
Run Code Online (Sandbox Code Playgroud)

这可能是将列表存储在最后一个元素中并修改其他元素的好方法,但这不会起作用,因为在每个递归引用中都会看到更改。

我明白为什么会发生这种情况,即由于它们的可变性。但是,我对这种行为的实际用例很感兴趣。有人可以启发我吗?

python dictionary list circular-reference circular-list

5
推荐指数
2
解决办法
586
查看次数

在某个类的 python 中获取 __init__ def 中的变量

我有一个类,其中包含某些内部变量,让我们举一个简单的例子

    class Example:
        def __init__(self):
            self.variable = "something"
            self.anotherVariable = "somethingElse"
Run Code Online (Sandbox Code Playgroud)

现在“inspect”中的签名仅向我提供括号中的内容,在本例中仅提供 self,但我能否以某种方式获得类中的变量名称列表,因此如果我运行该代码,它将导致:

输出:(self.variable, self.anotherVariable)

我感谢所有的帮助 :)

python function

2
推荐指数
1
解决办法
889
查看次数

连接 Pandas DataFrame 中的列值,用逗号替换“NaN”值

我正在尝试连接 Pandas DataFrame 列,用逗号替换 \xe2\x80\x9cNaN\xe2\x80\x9d 值。

\n\n
df = pd.DataFrame({\'col1\' : ["1","2","3","4","5",np.nan],\n                   \'col2\'  : ["p1","p2","p1",np.nan,"p2",np.nan], \n                   \'col3\' : ["A","B","C","D","E","F"]})\n\n\ndf\n\n\n col1    col2  col3\n0    1    p1    A\n1    2    p2    B\n2    3    p1    C\n3    4    NaN   D\n4    5    p2    E\n5    NaN  NaN   F\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

我需要一个输出:-

\n\n
   col1  col2  col3  col4\n0    1    p1    A    1, p1, A\n1    2    p2    B    2, p2, B\n2    3    p1    C    3, p1, C\n3    4    NaN   D    4, , D\n4    5    p2    E    5, p2, E\n5    NaN  NaN   F …
Run Code Online (Sandbox Code Playgroud)

python dataframe python-3.x pandas

2
推荐指数
1
解决办法
1893
查看次数

如何在 lambda 中导入 python 模块?

假设根据我想导入一些类的变量,创建它的对象并返回它。例如 :

if x=='SomeThing':
  import something
  object = something's object
else:
  import nothing
  object = nothing's object
object.function()
Run Code Online (Sandbox Code Playgroud)

我想使用 lambda 执行上述操作,我该怎么做?

python lambda function python-import python-3.x

2
推荐指数
1
解决办法
848
查看次数

iPython locals() 中的“_oh”是什么?以及如何在标准 python IDLE 中恢复当地人或创建新的当地人

我正在研究 IPython (Spyder) 中的命名空间,并尝试看看如果我dict.clear() locals(). 所以,事不宜迟:

Python 3.8.5 (default, Aug  5 2020, 09:44:06) [MSC v.1916 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.

IPython 7.19.0 -- An enhanced Interactive Python.

In [1]: locals().clear()

In [2]: locals
Traceback (most recent call last):

  File "<ipython-input-2-f1c14746c80d>", line 1, in <module>
    locals

  File "C:\Users\sayan\Anaconda3\envs\tfgpu_py38\lib\site-packages\IPython\core\displayhook.py", line 263, in __call__
    self.update_user_ns(result)

  File "C:\Users\sayan\Anaconda3\envs\tfgpu_py38\lib\site-packages\IPython\core\displayhook.py", line 201, in update_user_ns
    if self.cache_size and result is not self.shell.user_ns['_oh']:

KeyError: '_oh'


In [3]: dict
Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python namespaces local-variables ipython python-3.x

2
推荐指数
1
解决办法
4017
查看次数

str.split问题,需要求字符串中每个分量的长度

str_list = ["hello", "", "goodbye", "wonderful", "I love Python"]

我需要通过str.split. 如果有人帮忙,将不胜感激

python

1
推荐指数
1
解决办法
48
查看次数

如何根据列中的数值创建逗号分隔的数字列表

我想弄清楚如何根据特定列中的数值创建逗号分隔的数字列表。例如,如果数字列的值为 5,我想在另一列中创建一个逗号分隔的数字列表作为“1、2、3、4、5”。

假设我们从这个数据帧开始:

  inventory_partner inventory_partner2  calc
0                A1                 aa     1
1                A2                 bb     2
2                A3                 cc     5
3                A4                 dd     4
4                A5                 ee     5
5                A6                 ff     3
Run Code Online (Sandbox Code Playgroud)

我正在尝试访问此数据框,而不必为每个计算数字可能性在列表中手动编码:

  inventory_partner inventory_partner2  calc  my_comma_list
0                A1                 aa     1              1
1                A2                 bb     2           1, 2
2                A3                 cc     5  1, 2, 3, 4, 5
3                A4                 dd     4     1, 2, 3, 4
4                A5                 ee     5  1, 2, 3, 4, 5
5                A6                 ff     3        1, 2, 3
Run Code Online (Sandbox Code Playgroud)

下面是我的代码,它根据每个计算值手动创建要应用的数字列表。有没有更简单的方法使用 …

python string pandas

0
推荐指数
1
解决办法
88
查看次数