小编nut*_*hip的帖子

根据if-elif-else条件创建新列

我有一个DataFrame df:

    A    B
a   2    2 
b   3    1
c   1    3
Run Code Online (Sandbox Code Playgroud)

我想根据以下标准创建一个新列:

如果排 A == B: 0

如果排A > B: 1

如果排 A < B: -1

所以鉴于上表,它应该是:

    A    B    C
a   2    2    0
b   3    1    1
c   1    3   -1 
Run Code Online (Sandbox Code Playgroud)

对于if else我这样做的典型情况np.where(df.A > df.B, 1, -1),pandas是否提供了一个特殊的语法来一步解决我的问题(无需创建3个新列然后组合结果)?

python conditional pandas

57
推荐指数
5
解决办法
10万
查看次数

如何将空值存储为Integerfield

我已经看过所有类似的线程,阅读文档,并尝试了许多组合来存储空值,就像IntegerField在db中一样,每次都失败.

我正在使用MySQL.

models.py定义了一个age=models.IntegerField()字段.我从csv文件填充db,有些单元格没有值.Django文档说:

Field.null

If True, Django will store empty values as NULL in the database. Default is False.
Note that empty string values will always get stored as empty strings, not as NULL. 
Run Code Online (Sandbox Code Playgroud)

因为我正在使用IntegerField我想要一个空字符串(来自csv的空单元格)存储NULL在db中.因此,我(想)必须添加null=True到该age领域.实际上,我尝试了更多:

age=models.IntegerField()
age=models.IntegerField(null=True)
age=models.IntegerField(null=True, blank=True)
age=models.IntegerField(null=True, blank=True, default=None)
Run Code Online (Sandbox Code Playgroud)

每次我将空字符串插入到我得到的数据库中

ValueError: invalid literal for int() with base 10: ''
Run Code Online (Sandbox Code Playgroud)

有什么猜测我还能做什么?

python mysql django null

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

从csv文件中读取列的多索引

我有一个.csv文件,如下所示:

Male, Male, Male, Female, Female
R, R, L, R, R
.86, .67, .88, .78, .81
Run Code Online (Sandbox Code Playgroud)

我想把它读成df,所以我有:

    Male        Female
    R       L   R
0   .86 .67 .88 .78 .81
Run Code Online (Sandbox Code Playgroud)

我做了:

df = pd.read_csv('file.csv', header=[0,1])
Run Code Online (Sandbox Code Playgroud)

headers不削减它.结果如何

Empty DataFrame
Columns: [(Male, R), (Male, R), (Male, L), (Female, R), (Female, R)]
Index: []
Run Code Online (Sandbox Code Playgroud)

然而,标题上的文档说:

(...)Can be a list of integers that specify row
locations for a multi-index on the columns E.g. [0,1,3]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎么可能让它工作?

csv multi-index pandas

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

Selenium webdriver和unicode

这是我第二天使用Selenium 2库,而Unicode的痛苦似乎永远不会消退.

我只是做最基本的操作,想要打印页面源:

from selenium import webdriver


driver = webdriver.Firefox()
driver.get("http://google.com")

print driver.page_source
Run Code Online (Sandbox Code Playgroud)

果然,我收到一个错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u0119' in position 62045:  
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我怎么能把它编码到utf-8

python unicode selenium

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

获取<generator object <genexpr>

我有2个清单:

first_lst = [('-2.50', 0.49, 0.52), ('-2.00', 0.52, 0.50)]
second_lst = [('-2.50', '1.91', '2.03'), ('-2.00', '1.83', '2.08')]
Run Code Online (Sandbox Code Playgroud)

我想对它做以下数学运算:

乘以0.491.91(从相应的值first_lstsecond_lst)和乘0.522.03(对应值也).我希望这样做,条件是0每个相应元组中位置的值是理想的,所以-2.50== -2.50等.显然,我们也做同样的数学运算重组元组.

我的代码:

[((fir[0], float(fir[1])*float(sec[1]), float(fir[2])*float(sec[2])) for fir in first_lst) for sec in second_lst if fir[0] == sec[0]]
Run Code Online (Sandbox Code Playgroud)

然而产生一些对象:

[<generator object <genexpr> at 0x0223E2B0>]
Run Code Online (Sandbox Code Playgroud)

你能帮我解决一下代码吗?

python list-comprehension python-2.7

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

获取最接近给定日期的日期

鉴于此基准日期:

base_date = "10/29 06:58 AM"
Run Code Online (Sandbox Code Playgroud)

我想在列表中找到一个包含最接近日期的元组base_date,但它不能是更早的日期.

list_date = [('10/30 02:18 PM', '-103', '-107'), ('10/30 02:17 PM', '+100', '-110'), \
             ('10/29 02:15 AM', '-101', '-109') 
Run Code Online (Sandbox Code Playgroud)

所以这里的输出应该是('10/30 02:17 PM', '+100', '-110')(它不能是第3个元组,因为它的发生日期早于基准日期)

我的问题是,这个日期比较是否存在任何模块?我试图首先将数据全部更改为AM格式然后进行比较,但我的代码变得很丑,有很多切片.

@编辑:

要测试的大清单:

[('10/30 02:18 PM', '+13 -103', '-13 -107'), ('10/30 02:17 PM', '+13 +100', '-13 -110'), ('10/30 02:15 PM', '+13 -101', '-13 -109'), ('10/30 02:14 PM', '+13 -103', '-13 -107'), ('10/30 01:59 PM', '+13 -105', '-13 -105'), ('10/30 01:46 PM', '+13 -106', '-13 …
Run Code Online (Sandbox Code Playgroud)

python date python-2.7

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

如何使用字典查找替换列表中的元素

鉴于此列表

my_lst = ['LAC', 'HOU', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']
Run Code Online (Sandbox Code Playgroud)

我想根据字典值更改其值0th1st值:

def translate(my_lst):
    subs = {
        "Houston": "HOU", 
        "L.A. Clippers": "LAC",

    }
Run Code Online (Sandbox Code Playgroud)

所以列表变成:

['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']
Run Code Online (Sandbox Code Playgroud)

python replace list

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

如何在用硒悬停后点击可见的元素?

我想点击悬停后可见的按钮.它的HTML是:

<span class="info"></span>
Run Code Online (Sandbox Code Playgroud)

我用过这段代码:

import selenium.webdriver as webdriver
from selenium.webdriver.common.action_chains import ActionChains

url = "http://example.com"

driver = webdriver.Firefox()
driver.get(url)
element = driver.find_element_by_class_name("info")
hov = ActionChains(driver).move_to_element(element)
hov.perform()
element.click()
Run Code Online (Sandbox Code Playgroud)

虽然不行.我得到一个与最后一行代码相关的错误element.click():

selenium.common.exceptions.ElementNotVisibleException: Message: \
u'Element is not currently visible and so may not be interacted with' 
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

python selenium hover selenium-webdriver

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

BeautufulSoup 4,findNext()函数

我正在玩BeautifulSoup 4,我有这个HTML代码:

</tr>
          <tr>
<td id="freistoesse">Giraffe</td>
<td>14</td>
<td>7</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我想匹配<td>标签之间的两个值,所以这里是14和7.

我试过这个:

giraffe = soup.find(text='Giraffe').findNext('td').text
Run Code Online (Sandbox Code Playgroud)

但这只是匹配14.如何使用此功能匹配这两个值?

python beautifulsoup python-2.7

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

在 0.0.0.0:8000 上运行 django

我正在使用 vagrant 和 Virtualbox,所以我不能runserver使用默认端口和地址,否则它将无法工作。

姜戈 说:

(...) to listen on all public IPs (useful if you want to show off your work on 
other computers), use:

python manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过访问服务器,http://127.0.0.1:8888/但它说Unable to connect。你猜如何正确运行服务器?

我已经关注了这些gettingstartedwithdjango视频,这http://127.0.0.1:8888/对作者很有用。

python django

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