小编jim*_*iat的帖子

Python Pandas Lambda:在 DataFrame 中使用多个变量 Lambda

我有一个系列,如下所示:

example = pd.Series([[1.0, 1209.75, 1207.25],
 [1.0, 1211.0, 1207.5],
 [-1.0, 1211.25, 1205.75],
 [0, 1207.25, 1206.0],
 [1.0, 1206.25, 1201.0],
 [-1.0, 1205.75, 1202.75],
 [0, 1205.5, 1203.75]])
Run Code Online (Sandbox Code Playgroud)

这个系列基本上在每个单元格中有一个包含 3 个数字的列表。我把它变成一个 DataFrame 并添加一个新列:

example = example.to_frame(name="input")
example["result"]=np.NaN
Run Code Online (Sandbox Code Playgroud)

现在我想对其执行以下操作:

example["result"] = example["input"].apply(lambda x,y,z: y if x==1 else z if x==-1 else NaN)
Run Code Online (Sandbox Code Playgroud)

尝试执行此操作时收到以下错误消息: missing 2 required positional arguments: 'y' and 'z'

python lambda pandas

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

Python,asyncio:类中的装饰器以简化循环语法

让我们考虑以下包含异步循环和异步协程的类示例:

import asyncio

class Async:
    def __init__(self):
        self.loop=asyncio.get_event_loop()

    async def function(self, word):
        print(word)
        await asyncio.sleep(1.0)

a=Async()
a.loop.run_until_complete(a.function("hello_world"))
Run Code Online (Sandbox Code Playgroud)

这确实有效。
我想创建一个装饰器,以便我可以简化调用代码的function语法

a.function("hello_world")
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

class Async:
    def __init__(self):
        self.loop=asyncio.get_event_loop()

    def async_loop(f):
        def decorated(*args, **kwargs):
            self.loop.run_until_complete(f(*args, **kwargs))

    @async_loop
    async def function(self, word):
        print(word)
        await asyncio.sleep(1.0)

a=Async()
a.function("hello_world")
Run Code Online (Sandbox Code Playgroud)

此时我收到错误:'NoneType' object is not callable。- 我也尝试在类之外使用装饰器函数,但我得到了同样的错误。我不确定装饰器函数最好位于类内部(作为方法)还是外部。我对 python 还很陌生,所以 Asyncio、装饰器和类中的装饰器对我来说仍然很困惑。任何好心人都会知道如何正确地编写该代码吗?

python python-decorators python-asyncio

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

使用“加载更多结果”按钮抓取页面

我正在尝试使用requestsBeautifulSoup/来抓取以下页面Lxml

https://www.reuters.com/search/news?blob=soybean&sortBy=date&dateRange=all

这是一种带有load more results按钮的页面。我找到了几页解释如何执行此操作的页面,但不在requests.

我知道我应该多花几个小时研究这个问题,然后再在这里提问,以证明我已经尝试过。

我试图查看检查窗格、网络选项卡等,但我对了解如何与 javascript 交互的请求仍然有点太新鲜了。

我不需要完全成熟的脚本/解决方案作为答案,只需要一些关于如何使用 完成这项非常典型任务的指示requests,以节省我宝贵的研究时间。

提前致谢。

python python-requests

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

Python转义"{}"符号

我有一个字符串,我在其中使用字符串格式:

'SELECT {} FROM {} WHERE country={} AND \{\}'.format("apples", "tables","home")

目前这不起作用; 如何转义{和}以便字符串打印:

SELECT apples FROM tables WHERE country=home AND {}
Run Code Online (Sandbox Code Playgroud)

python string-formatting

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

装饰者 - 试图理解这个简单的例子

基本上我正在尝试实现一个时序装饰器:

def laptime(func):
    def inner(*args):
        start = time.time()
        r = func(*args)
        print time.time()-start
    return r

@laptime
def loop(a,b):
    for i in range(a,b):
        print (i)

loop(2, 1000)
Run Code Online (Sandbox Code Playgroud)

我尝试了许多方法让它起作用,但它们都返回了我不理解的有趣结果......我知道关于SO的主题还有其他多个问题,但不知怎的,它们对我来说没有任何帮助掌握如何做到这一点.

python decorator

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

python删除列表理解中的dict键

为什么以下表达式(旨在删除dict中的多个键)无效?(event是一个字典)

[del event[key] for key in ['selected','actual','previous','forecast']]
Run Code Online (Sandbox Code Playgroud)

替换它的最小表达式是什么?

python dictionary list-comprehension

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

python - for循环列表 - 返回错误"太多值要解压缩"

我知道网站上有很多问题,但我阅读的十几个未能解决这个简单的问题:

for df, ind_source in ["df1", "df2", "df3"], ["investingcom", "bloomberg", "ft"]:
        print(df+" "+ind_source)
Run Code Online (Sandbox Code Playgroud)

返回错误值: too many values to unpack (expected 2)

这个问题的解决方案是什么?

python for-loop

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

list comprehension:为输入列表中的每个项创建2个项目?

我有一个列表如下:

list1 = ["pierre", "paul", "jacques"]
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含6个项目的新列表:

list2 = ["pierre", "pierre#2","paul","paul#2", "jacques", "jacques#2"] 
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

list2 = [i, "{}#2".format(i) for i in list1 ]
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.有人会有什么建议吗?

python list-comprehension

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

Python,sqlalchemy,使用WHERE IN子句进行选择

使用Python和sqlalchemy:

如何使用元组通过WHERE ... IN子句实现以下MySQL语句?

SELECT * FROM mytable WHERE (symbol, volume) IN (('ES', 238 ),('GB', 500 ),('OH', 800 ));

在sqlalchemy 核心中(即不是 ORM版本)

我查看了文档,并且通常在SO / google上浏览,这无处可寻...

python sqlalchemy

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

Vim 简单映射

我最近开始使用 Vim,刚刚安装了 NERDTree(一个用于导航文件的插件)。访问该插件的命令是:NERDTree这样的,尽管通过为该命令分配一个来开始学习映射是一个好主意。

所以我在我的.vimrc文件中添加了以下行:map :nt :NERDTree- 但是当我输入:ntvim 文件时(即使在重新启动后),我收到以下错误消息:not an editor command: nt

我还尝试在通过键入编辑文件时直接添加映射,:map :nt :NERDTree但是当我尝试使用该命令时它返回了相同的错误。

我检查了那个答案:vim 中的 remap、noremap、nnoremap 和 vnoremap 映射命令有什么区别?,所以在我看来:map(反对noremap等)是最好的命令。

输入原始命令时,该插件工作正常。

我究竟做错了什么?(抱歉菜鸟问题)

vim

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