我有以下包含 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')) 然后使用 …
我有一个包含(除了其他列)全名的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],这是拆分组的最后一个元素,以确保我得到真正的姓氏.在某些情况下(例如像安德烈·马丁大师这样的名字),这有助于获得姓氏,即主人.
那我该怎么做呢?
我有四张桌子:
表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) 我想定期(例如每小时)抓取一些特定的网页。我想用python做。抓取的结果应插入到SQLite表中。新信息将被删除,但是“旧”信息将再次被删除,因为python脚本将每小时运行一次。
更准确地说,我想抓取一个体育比赛结果页面,随着比赛的进行,越来越多的比赛结果发布在同一页面上。因此,对于每个新的抓取,我只需要将新结果输入到SQLite表中,因为较早的结果已经在一小时(甚至更早)之前就被抓取了(并插入到表中)。
当第二次被抓取时,我也不想插入相同的结果两次。因此,应该有某种机制来检查是否已刮取一个结果。可以在SQL级别完成吗?因此,我刮了整个页面,INSERT为每个结果创建一个语句,但是只有那些INSERT成功执行的语句才在数据库中不存在。我在想类似UNIQUE关键字之类的东西。
还是我对性能的考虑太多了,应该在DROP TABLE每次开始抓取然后再次从头开始抓取所有内容之前,通过每次操作来解决此问题?我不会谈论太多数据。一年大约有100场比赛的记录(=比赛)。
基本上,我只会对某种最佳实践方法感兴趣。
我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包含代表三个不同类别的字符串值,例如A、B、C。
所以问题是:如果标记数据以字符串形式表示类别,我该如何使用 SVC(支持向量分类)。对我来说,一个直观的解决方案似乎只是将每个字符串转换为一个数字。例如,A = 0,B = 1等,但事实真的是最好的解决办法?
我在解析这个网站时遇到问题: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-1或cp1252通过调用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)
如何更改我的代码以正确解析变音符号?
我有一个熊猫数据框,其中包含以下数据:
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 + …
我想在域的子文件夹中安装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) 基于此解决方案,我在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)
我究竟做错了什么?
我需要一个 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。