小编OD1*_*995的帖子

在两个数据帧之间找到相等的列

我有两个pandas数据框,a并且b

a1   a2   a3   a4   a5   a6   a7
1    3    4    5    3    4    5
0    2    0    3    0    2    1
2    5    6    5    2    1    2
Run Code Online (Sandbox Code Playgroud)

b1   b2   b3   b4   b5   b6   b7
3    5    4    5    1    4    3
0    1    2    3    0    0    2
2    2    1    5    2    6    5
Run Code Online (Sandbox Code Playgroud)

这两个数据框包含完全相同的数据,但顺序不同,列名也不同。根据两个数据框中的数字,我希望能够a将每个列名与b.

这并不像简单地将 的第一行a与第一行进行比较那么容易,b因为存在重复的值,例如两者a4a7都有值,5 …

python python-3.x pandas

18
推荐指数
4
解决办法
848
查看次数

使用两个字典的Map列

我有一个df

ColA  ColB
1     1
2     3
2     2
1     2
1     3
2     1
Run Code Online (Sandbox Code Playgroud)

我想使用两个不同的字典来更改ColB中的值。我想使用d1ColA中的值为1以及d2ColB中的值为2的情况。

d1 = {1:'a',2:'b',3:'c'}
d2 = {1:'d',2:'e',3:'f'}
Run Code Online (Sandbox Code Playgroud)

导致:

ColA  ColB
1     a
2     f
2     e
1     b
1     c
2     d
Run Code Online (Sandbox Code Playgroud)

实现此目标的最佳方法是什么?

python pandas

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

Python 在 smtplib.SMTP("smtp.gmail.com", 587) 上冻结

我正在尝试使用 Gmail 创建一个发送电子邮件的脚本。但是,当运行以下行时,我的代码会冻结:

smtplib.SMTP("smtp.gmail.com", 587)
Run Code Online (Sandbox Code Playgroud)

这是在我输入用户名和密码之前,所以与我的 Gmail 帐户无关。为什么会这样?我正在使用 Python 3.6.3

完整代码如下:

import smtplib

# Specifying the from and to addresses

fromaddr = 'XXX@gmail.com'
toaddrs  = 'YYY@gmail.com'

# Writing the message (this message will appear in the email)

msg = 'Enter you message here'

# Gmail Login

username = 'XXX@gmail.com'
password = 'PPP'

# Sending the mail  

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Run Code Online (Sandbox Code Playgroud)

python smtplib

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

使用Python重新排序ESPN的草拟策略中的玩家

我正在尝试使用Python和Selenium在我的幻想足球队的“预草稿策略”页面中对球员进行重新排序。登录并进入页面是可以的,但是尝试交换播放器会导致一些问题。

到目前为止,我已使用以下代码,但未成功:

import nfl_useful_functions as nfl
from selenium.webdriver import ActionChains
import time

## Login to ESPN
driver = nfl.login2espn()
## Go to draft strategy page
driver.get("http://fantasy.espn.com/football/editdraftstrategy?leagueId=123456")
## Wait 10 seconds
time.sleep(10)
## Choose the player to be dragged (player 1)
draggable = driver.find_element_by_xpath("/html[1]/body[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[2]/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/section[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[1]")
## Choose the player for player 1 to be dragged onto (and swapped with)
droppable = driver.find_element_by_xpath("/html[1]/body[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[2]/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/section[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/table[1]/tbody[1]/tr[2]")
## Drag and drop
#Attempt 1
ActionChains(driver).drag_and_drop(draggable, droppable).perform()
#Attempt 2
ActionChains(driver).drag_and_drop_by_offset(draggable, 0, 40).perform()
#Attempt 3
ActionChains(driver).click_and_hold(draggable)\
                    .move_to_element(droppable)\
                    .release(draggable)\
                    .perform()
#Attempt …
Run Code Online (Sandbox Code Playgroud)

python selenium

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

使用 Python 的请求重新创建带有 WebKitFormBoundary 的 POST 请求

我正在尝试使用带有 Pythonrequests库的 POST 请求从网站上抓取一些数据。不幸的是,我无法发布该页面的链接,因为您必须登录该网站才能使用它。

我尝试复制的请求的文件扩展名为 .ehtml,这是我希望重新创建的请求有效负载的一部分:

------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="session_id"

W0pNKn8AAQEAACD-XkYAAAAJ
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="p_session_id"

W0pMOH8AAQEAABZSUVkAAAAD
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="attach_key"


------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="chosen"

0
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="debug"


------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="language"

en
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="game_system_id"

NULL
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="collection_detail_id"

NULL
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="competition_id"

NULL
Run Code Online (Sandbox Code Playgroud)

使用 stackoverflow 上的一些问题的一些帮助,到目前为止我已经设法重新创建它:

--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="session_id"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="p_session_id"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="attach_key"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="chosen"

0
--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="debug"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="language"

en …
Run Code Online (Sandbox Code Playgroud)

python python-requests

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

将工具提示添加到Bokeh DataTable

我有一个pandas DataFrame:

I      A      A2      B      B2
1    'dog'    10    'cat'    20
2    'elf'    15    'egg'    45
3    'hat'    80    'bag'    50
Run Code Online (Sandbox Code Playgroud)

然后我将其转换为Bokeh DataTable,但仅包含列I,A和B.

我想为A列和B列中的单元格添加工具提示,并在A2或B2中显示相应的值.所以,例如,如果你在'狗'上面盘旋,工具提示将是10,如果你在'bag'上空盘旋,工具提示将是50.

根据我的理解,还没有一种方法可以使用HoverTool添加工具提示,这可以在散点图等上完成.但是这个答案表明可以采用解决方法,尽管在该示例中工具提示仅显示了值显示在表格中.如何让工具提示显示相应的值?

python tooltip bokeh

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

将字典项转换为 Pandas 数据框的行,其中键是元组,值是整数

我有一本字典如下:

d = {("Sam","Scotland","23") : 25,
     ("Oli","England","23") : 28,
     ("Ethan","Wales","18") : 19}
Run Code Online (Sandbox Code Playgroud)

我想将它转换成一个如下所示的 Pandas 数据框:

Name    Country    Age    Count
Sam     Scotland    23     25
Oli     England     23     28
Ethan   Wales       18     19
Run Code Online (Sandbox Code Playgroud)

我试着这样做:

df = pd.DataFrame.from_items(d.items(),orient="index",
                              columns=["Name","Country","Age","Count"])
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

ValueError: The value in each (key, value) pair must be an array, Series, or dict
Run Code Online (Sandbox Code Playgroud)

我很欣赏通过循环遍历元组的每个项目和每个元素是可能的,但是有没有更干净的方法来做到这一点?

python dictionary dataframe pandas

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

带有 isalpha() 的波浪号 TRUE 返回 -2 而不是 FALSE

玩弄isalpha(),我注意到了一些奇怪的行为。

"a".isalpha()
>>True
"2".isalpha()
>> False
Run Code Online (Sandbox Code Playgroud)

上面的两个语句返回了我期望的结果。但是,现在之前添加波浪号就没有意义了。

~"a".isalpha()
>> -2
~"2".isalpha()
>> -1
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?我发现使用not而不是~返回我期望的输出,但我对上述行为感兴趣。

not "a".isalpha()
>> False
not "2".isalpha()
>> True
Run Code Online (Sandbox Code Playgroud)

python-3.x isalpha

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

无法使用 Anaconda 安装 Tabula

我正在尝试安装 Tabula for Python,因为它似乎是从 PDF 中提取表格的方法。但是我无法安装它。

我正在使用 Anaconda,并按照 Tabula 的 Anaconda 页面 ( https://anaconda.org/auto/tabula )上的步骤尝试安装它:

conda install -c auto tabula 
Run Code Online (Sandbox Code Playgroud)

但我只是收到一条错误消息: 链接在这里

据我所知,我已经添加了“自动”频道,因此应该能够安装它。但我想我一定错过了一些东西。非常感谢任何帮助!

python installation anaconda

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

使散景图散点的颜色和标记取决于数据框值

我一直在玩散景,以获得交互式散点图、工具提示和交互式图例等。

目前,我可以使用绘图后面的 Pandas 数据框中列的值来设置点的颜色。但是我想知道是否可以使用数据框中的另一列设置标记类型(菱形、圆形、方形等)?

我很欣赏这意味着您需要一个双重图例,但希望这不会成为太大的问题。

python pandas bokeh

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