如果我有一个功能
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)
我意识到我最初没有指定这一点,但是可以在保留类型注释的同时做到这一点吗?到目前为止的最佳答案建议使用装饰器 - 但是,这不会保留返回类型
让我先说一下,为了重现这个问题,我需要一个大数据,这是问题的一部分,我无法预测什么时候会出现这种特殊性。无论如何,数据太大(~13k 行,2 列)无法粘贴到问题中,我在帖子末尾添加了一个 pastebin 链接。
在过去的几天里,我遇到了一个奇怪的问题pandas.core.window.rolling.Rolling.corr
。我有一个数据集,我试图在其中计算滚动相关性。这就是问题:
在计算
window_size=100
两列 (a
andb
)之间的滚动 ( ) 相关性时:一些索引(一个这样的索引是12981)给出接近的0
值(顺序1e-10
),但理想情况下它应该返回nan
orinf
,(因为一列中的所有值都是常数)。但是,如果我只是计算与该索引有关的独立相关性(即包括所述索引的最后 100 行数据),或者对较少数量的行(例如 300 或 1000 而不是 13k)执行滚动计算,我得到正确的结果(即nan
或inf
。)
>>> 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) 我正在尝试生成一个包含非None
参数当前调用的名称和值的字典。这非常感觉应该是内置的,但在 Python 文档中找不到任何能完全做到这一点的东西。
例如,当
\ndef 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到目前为止,我已经研究了以下内容,所有这些似乎都有缺陷:
\ndef 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) 因此,如果我有一个列表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)
这可能是将列表存储在最后一个元素中并修改其他元素的好方法,但这不会起作用,因为在每个递归引用中都会看到更改。
我明白为什么会发生这种情况,即由于它们的可变性。但是,我对这种行为的实际用例很感兴趣。有人可以启发我吗?
我有一个类,其中包含某些内部变量,让我们举一个简单的例子
class Example:
def __init__(self):
self.variable = "something"
self.anotherVariable = "somethingElse"
Run Code Online (Sandbox Code Playgroud)
现在“inspect”中的签名仅向我提供括号中的内容,在本例中仅提供 self,但我能否以某种方式获得类中的变量名称列表,因此如果我运行该代码,它将导致:
输出:(self.variable, self.anotherVariable)
我感谢所有的帮助 :)
我正在尝试连接 Pandas DataFrame 列,用逗号替换 \xe2\x80\x9cNaN\xe2\x80\x9d 值。
\n\ndf = 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) 假设根据我想导入一些类的变量,创建它的对象并返回它。例如 :
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 执行上述操作,我该怎么做?
我正在研究 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) str_list = ["hello", "", "goodbye", "wonderful", "I love Python"]
我需要通过str.split
. 如果有人帮忙,将不胜感激
我想弄清楚如何根据特定列中的数值创建逗号分隔的数字列表。例如,如果数字列的值为 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 ×10
function ×4
pandas ×3
python-3.x ×3
dataframe ×1
dictionary ×1
ipython ×1
lambda ×1
list ×1
namespaces ×1
numpy ×1
string ×1