小编bet*_*eta的帖子

Pandas 数据框应用参考前一行来计算差异

我有以下包含 2 列(简化)的 Pandas 数据框。第一列包含玩家姓名,第二列包含日期datetime对象):

  player    date
  A         2010-01-01
  A         2010-01-09
  A         2010-01-11
  A         2010-01-15
  B         2010-02-01
  B         2010-02-10
  B         2010-02-21
  B         2010-02-23
Run Code Online (Sandbox Code Playgroud)

我想添加一个列差异,表示每个玩家的时差。结果应如下所示:

  player    date            diff
  A         2010-01-01      0
  A         2010-01-09      8
  A         2010-01-11      2
  A         2010-01-15      4
  B         2010-02-01      0
  B         2010-02-10      9
  B         2010-02-21      11
  B         2010-02-23      2
Run Code Online (Sandbox Code Playgroud)

第一行有0差异,因为没有更早的日期。第二行显示8,因为之间的差异2010-01-01,并2010-01-09为八天。

问题不是计算两个datetime物体之间的日差。我只是不确定如何添加新列。我知道,我必须先制作groupby( df.groupby('player')) 然后使用 …

python apply dataframe pandas

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

拆分pandas列并将最后一个元素添加到新列

我有一个包含(除了其他列)全名的pandas数据框:

 fullname
 martin master
 andreas test
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列,它沿着空格分割fullname列,并将最后一个元素分配给一个新列.结果应如下所示:

 fullname           lastname
 martin master      master
 andreas test       test
Run Code Online (Sandbox Code Playgroud)

我以为它会像这样工作:

df['lastname'] = df['fullname'].str.split(' ')[-1]
Run Code Online (Sandbox Code Playgroud)

但是,我得到了一个 KeyError: -1

我使用[-1],这是拆分组的最后一个元素,以确保我得到真正的姓氏.在某些情况下(例如像安德烈·马丁大师这样的名字),这有助于获得姓氏,即主人.

那我该怎么做呢?

python split pandas

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

SQL select将两列合并为一列

我有四张桌子:

表A:

ID | B_ID
----------
 1 |  5
 2 |  6
 3 |  7
 4 |  8
Run Code Online (Sandbox Code Playgroud)

表B:

B_ID
-----
 5
 6
 7
 8
Run Code Online (Sandbox Code Playgroud)

表C:

C_ID | C_Name
--------------
 5   | Alpha
 6   | Beta
Run Code Online (Sandbox Code Playgroud)

表D:

D_ID | D_Name
--------------
 7   | Delta
 8   | Gamma
Run Code Online (Sandbox Code Playgroud)

注意,表B中的值可以来自表C或表D.

我现在需要一个ID从表A 中显示的查询和一个名为第二列的查询,该列Name由基于B_ID表B列的相应名称组成.

预期结果应如下所示:

ID | Name
----------
 1 |  Alpha
 2 |  Beta
 3 |  Delta
 4 |  Gamma
Run Code Online (Sandbox Code Playgroud)

我试过的是这个查询:

SELECT *
FROM B
LEFT OUTER …
Run Code Online (Sandbox Code Playgroud)

mysql sql select join outer-join

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

使用python和sqlite进行网页抓取。如何有效地存储抓取的数据?

我想定期(例如每小时)抓取一些特定的网页。我想用python做。抓取的结果应插入到SQLite表中。新信息将被删除,但是“旧”信息将再次被删除,因为python脚本将每小时运行一次。

更准确地说,我想抓取一个体育比赛结果页面,随着比赛的进行,越来越多的比赛结果发布在同一页面上。因此,对于每个新的抓取,我只需要将新结果输入到SQLite表中,因为较早的结果已经在一小时(甚至更早)之前就被抓取了(并插入到表中)。

当第二次被抓取时,我也不想插入相同的结果两次。因此,应该有某种机制来检查是否已刮取一个结果。可以在SQL级别完成吗?因此,我刮了整个页面,INSERT为每个结果创建一个语句,但是只有那些INSERT成功执行的语句才在数据库中不存在。我在想类似UNIQUE关键字之类的东西。

还是我对性能的考虑太多了,应该在DROP TABLE每次开始抓取然后再次从头开始抓取所有内容之前,通过每次操作来解决此问题?我不会谈论太多数据。一年大约有100场比赛的记录(=比赛)。

基本上,我只会对某种最佳实践方法感兴趣。

python sqlite web-scraping

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

以分类(字符串)数据作为标签的 SVC(支持向量分类)

scikit-learn用来实现一个简单的监督学习算法。本质上,我遵循此处的教程(但使用我自己的数据)。

我尝试拟合模型:

clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(features_training,labels_training)
Run Code Online (Sandbox Code Playgroud)

但是在第二行,我收到一个错误: ValueError: could not convert string to float: 'A'

该错误是预期的,因为label_training包含代表三个不同类别的字符串值,例如ABC

所以问题是:如果标记数据以字符串形式表示类别,我如何使用 SVC(支持向量分类)。对我来说,一个直观的解决方案似乎只是将每个字符串转换为一个数字。例如,A = 0B = 1等,但事实真的是最好的解决办法?

python machine-learning svm scikit-learn

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

使用正确的字符编码进行抓取(python 请求 + beautifulsoup)

我在解析这个网站时遇到问题:http : //fm4-archiv.at/files.php?cat=106

它包含特殊字符,例如变音符号。看这里:在此处输入图片说明

正如您在上面的屏幕截图中看到的那样,我的 chrome 浏览器正确显示了变音符号。但是在其他页面上(例如:http : //fm4-archiv.at/files.php?cat = 105),变音没有正确显示,如下面的屏幕截图所示: 在此处输入图片说明

元 HTML 标记在页面上定义了以下字符集:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
Run Code Online (Sandbox Code Playgroud)

我使用 python requests 包来获取 HTML,然后使用 Beautifulsoup 来抓取所需的数据。我的代码如下:

r = requests.get(URL)
soup = BeautifulSoup(r.content,"lxml")
Run Code Online (Sandbox Code Playgroud)

如果我打印编码 ( print(r.encoding),结果是UTF-8. 如果我在控制台上输出数据时手动将编码更改为ISO-8859-1cp1252通过调用r.encoding = ISO-8859-1没有任何更改。这也是我的主要问题。

r = requests.get(URL)
r.encoding = 'ISO-8859-1'
soup = BeautifulSoup(r.content,"lxml")
Run Code Online (Sandbox Code Playgroud)

仍然会在我的 python IDE 的控制台输出中显示以下字符串:

Der Wildlöwenpfleger
Run Code Online (Sandbox Code Playgroud)

相反,它应该是

Der Wildlöwenpfleger
Run Code Online (Sandbox Code Playgroud)

如何更改我的代码以正确解析变音符号?

python encoding utf-8 python-requests

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

根据条件将Python Pandas平均分为新列

我有一个熊猫数据框,其中包含以下数据:

matchID    server    court    speed
1          1         A         100
1          2         D         200
1          3         D         300
1          4         A         100
1          1         A         120
1          2         A         250
1          3         D         110
1          4         D         100
2          1         A         100
2          2         D         200
2          3         D         300
2          4         A         100
2          1         A         120
2          2         A         250
2          3         D         110
2          4         D         100
Run Code Online (Sandbox Code Playgroud)

我想添加两个新列,其中包含基于两个条件的均值。该列meanSpeedCourtA13应包含servers1和3的平均速度,其中court = A。这只蜜蜂(100 + …

python mean pandas

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

nginx +子文件夹中的wordpress + debian配置

我想在域的子文件夹中安装wordpress博客。我用nginx。访问博客的网址应如下所示:example.com/blog

站点配置如下所示:

server {
        listen 80;
        listen [::]:80;
        root /var/www/example.com/html; 
        index index.php index.html index.htm index.nginx-debian.html;   
        server_name example.com www.example.com;

        location /blog {
                alias /var/www/example.comblog/html;
                index index.php;
                try_files $uri $uri/ /blog/index.php?q=$uri&$args;
        }

        location ~ /blog/.+\.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        location ~ /\.ht {
                deny all;
        }
}
Run Code Online (Sandbox Code Playgroud)
  • wordpress文件位于该文件夹中 /var/www/example.comblog/html。访问时example.com/blog,浏览器显示404错误。

  • /etc/php5/fpm/php.ini我改编这个:cgi.fix_pathinfo=0

  • nginx版本:nginx / 1.6.2

  • /var/log/nginx/error.log 没有显示任何感兴趣的内容

更新1:

将错误日志记录设置为调试后,(其中包括)以下几行。也许这会有所帮助:

open index "/var/www/example.comblog/html/index.php"
internal redirect: "/blog/index.php?"
rewrite phase: 1 …
Run Code Online (Sandbox Code Playgroud)

php wordpress nginx fpm

5
推荐指数
0
解决办法
169
查看次数

熊猫数据框掩码以将值写入新列

基于此解决方案,我在Pandas数据帧上创建了几个遮罩,以创建一个新列,该列应由不同的列填充(基于条件)。

(简化的)代码如下所示:

mask0 = (df['condition'] == 1)
mask1 = (df['condition'] == 0)

df.loc[mask0, 'newColumn'] = df['otherColumn1']
df.loc[mask1, 'newColumn'] = df['otherColumn2']
Run Code Online (Sandbox Code Playgroud)

但是,在执行第三行时,出现以下错误:

ValueError:无法从重复的轴重新索引

如果我只是这样做,它就可以工作:

df.loc[mask0, 'newColumn'] = 1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python mask dataframe pandas

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

正则表达式匹配一个单词后跟另一个具有特定后缀的单词

我需要一个 grep 正则表达式,我想在一个文本文件上运行。grep 命令应输出文本文件的每一行,其中包含一个单词(令该单词为foo),后跟一个空格和另一个以某个后缀结尾的单词(令该后缀为ing)。

因此正则表达式应该匹配以下序列:foo going, foo walking,foo running

请注意,ing应该位于 后面的下一个单词中foo。所以正则表达式应该匹配:foo asfd asdfing

我试过

grep -i "foo .*ing"
Run Code Online (Sandbox Code Playgroud)

但这不仅匹配紧邻的下一个单词,还匹配 ifing位于 后第二个单词中的情况foo

regex grep

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