小编X33*_*X33的帖子

Pandas 从 apply 函数返回 DataFrame?

sdf = sdf['Name1'].apply(lambda x: tryLookup(x, tdf))
Run Code Online (Sandbox Code Playgroud)

tryLookupName1是一个当前接受字符串的函数,该字符串是sdf 列中的值。我们使用 apply 将函数映射到 DataFrame 中的每一行sdf

有没有tryLookup办法返回tryLookup一个我想要与 DataFrame 合并的 DataFrame ,而不是仅返回一个字符串sdftryLookup有一些额外的信息,我想通过将它们作为新列添加到 中的所有行来将其包含在结果中sdf

所以回报tryLookup是这样的:

return pd.Series({'BEST MATCH': bestMatch, 'SIMILARITY SCORE': humanScore})
Run Code Online (Sandbox Code Playgroud)

我尝试过诸如

sdf = sdf.merge(sdf['Name1'].apply(lambda x: tryLookup(x, tdf)), left_index=True, right_index=True)
Run Code Online (Sandbox Code Playgroud)

但这只是抛出

Traceback (most recent call last):
  File "lookup.py", line 160, in <module>
    main()
  File "lookup.py", line 40, in main
    sdf = sdf.merge(sdf['Name1'].apply(lambda x: tryLookup(x, tdf)), left_index=True, right_index=True)
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 pandas

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

Python基于__init__值继承魔术方法

让我们想象一下我有一个单独的X.目的X是包装listdict提供事件监听功能.一切顺利.

class X(object):
    def __init__(self, obj)
        self._obj = obj

    def __getattr__(self, name):
        # do stuff with self._obj

    def __getitem__(self, key):
        return self._obj[key]

    def __setitem__(self, key, val):
        self._obj[key] = val

    # rest of functionality ...
Run Code Online (Sandbox Code Playgroud)

所以这可以用来包装dict如此:

x = X({
    'foo' : False
})

x.listen('foo', callback)

X['foo'] = True         # triggers event
X.update({
    'foo' : False       # triggers event
})
Run Code Online (Sandbox Code Playgroud)

或者list:

x = X([1,2])

x.listen(callback)

X.append(1)        # triggers …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

找到在等距交错列系统中单击的图块

我的网格

tileWidth = 64px
tileHeight = 128px
Run Code Online (Sandbox Code Playgroud)

(图像本身为128px,但实际的钻石高32px,宽64px)

在此输入图像描述

如你所见,我有一个交错的网格系统; 然而,我花了最后两个小时试图想出一个系统,我可以相对于画布获取鼠标坐标,并找出点击了什么样的瓷砖(显然是在菱形字段内).

例如,如果我点击了瓷砖21, 26- 我将如何在程序中找到它?

我们将非常感谢能够朝着正确方向努力的任何指示.谢谢!

2d canvas isometric html5-canvas

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

汇编到 ECX 寄存器中的 OR 指令

在我正在阅读的一本书中,我们给出了以下片段和问题:

此函数使用 SCAS 和 STOS 的组合来完成其工作。首先,分别解释第1行和第8行中的[EBP+8]和[EBP+C]的类型是什么。接下来,解释一下这个片段的作用:

01: 8B 7D 08    mov edi, [ebp+8]
02: 8B D7       mov edx, edi
03: 33 C0       xor eax, eax
04: 83 C9 FF    or ecx, 0FFFFFFFFh
05: F2 AE       repne scasb
06: 83 C1 02    add ecx, 2
07: F7 D9       neg ecx
08: 8A 45 0C    mov al, [ebp+0Ch]
09: 8B AA       mov edi, edx
10: F3 AA       rep stosb
11: 8B C2       mov eax, edx
Run Code Online (Sandbox Code Playgroud)

在使用在线解决方案(https://johannesbader.ch/2014/05/practical-reverse-engineering-exercises-page-11/)检查后,我几乎弄清楚了一切,但是,此代码段中的一个步骤仍然没有感觉我。

根据在线解决方案,当我们or ecx, 0FFFFFFFFh …

x86 assembly

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

左边的数字是什么意思?实用逆向工程书籍

我尝试搜索,但找不到任何可以提供解释的内容,所以这是我最后的手段。这可能是一个愚蠢的问题,但是左侧突出显示的数字意味着什么?

在此输入图像描述

谢谢

assembly

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

汇编中的函数结语

我试图跟随我的书的作者,他给了我们一个带有序言和尾声的示例函数(函数中没有局部变量)

1:    push ebp
2:    mov ebp, esp
3:    ...
4:    movsx eax, word ptr [ebp+8]
5:    movsx eax, word ptr [ebp+0Ch]
6:    add eax, ecx
7:    ...
8:    mov esp, ebp
9:    pop ebp
10:   retn
Run Code Online (Sandbox Code Playgroud)

push eax     ; param 2
push ecx     ; param 1
call addme
add esp, 8   ; cleanup stack
Run Code Online (Sandbox Code Playgroud)

在这个例子中,第 8 行不是冗余指令吗?我的意思是EBPESP在这种情况下是不是已经等于?没有一直PUSHPOP在由于堆栈。

我的假设是,只有当我们将局部变量压入堆栈时才需要这条线,这将是一种清除这些局部变量堆栈的方法?

我想澄清一下,情况确实如此

x86 assembly

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

不兼容的类型 - 是因为数组已经是一个指针?

在下面的代码中,我创建了一个基于书籍结构的对象,并且让它拥有多个"书籍",我设置的是一个数组(定义/启动的对象,即).但是,每当我去测试我的指针知识(练习帮助)并尝试制作一个指向创建对象的指针时,它就会给我错误:

C:\ Users\Justin\Desktop\Project\wassuip\main.cpp | 18 |错误:将"书籍 " 分配给"书籍*[4]"|*时出现不兼容的类型

请问,这是因为对象book_arr []已被视为指针,因为它是一个数组?谢谢(C++新手,只是想验证).

#include <iostream>
#include <vector>
#include <sstream>

#define NUM 4

using namespace std;

struct books {
    float price;
    string name;
    int rating;
} book_arr[NUM];

int main()
{
    books *ptr[NUM];
    ptr = &book_arr[NUM];

    string str;

    for(int i = 0; i < NUM; i++){
        cout << "Enter book name: " << endl;
        cin >> ptr[i]->name;
        cout << "Enter book price: " << endl;
        cin >> str;
        stringstream(str) << ptr[i]->price;
        cout << …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

assembly ×3

python ×2

python-2.7 ×2

x86 ×2

2d ×1

c++ ×1

canvas ×1

html5-canvas ×1

isometric ×1

pandas ×1