我GROUP_CONCAT()在MySQL查询中使用将多行转换为单个字符串.但是,此函数的结果的最大长度是1024字符.
我非常清楚我可以改变参数group_concat_max_len来增加这个限制:
SET SESSION group_concat_max_len = 1000000;
Run Code Online (Sandbox Code Playgroud)
但是,在我正在使用的服务器上,我无法更改任何参数.不是通过使用前面的查询而是通过编辑任何配置文件.
所以我的问题是:有没有其他方法可以将多行查询的输出转换为单个字符串?
我有一个包含一列的数据框,我想把它分成两列,一列标题为' fips'和另一列'row'
我的数据框df看起来像这样:
row
0 00000 UNITED STATES
1 01000 ALABAMA
2 01001 Autauga County, AL
3 01003 Baldwin County, AL
4 01005 Barbour County, AL
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用df.row.str[:]来实现分割行单元格的目标.我可以df['fips'] = hello用来添加一个新列并填充它hello.有任何想法吗?
fips row
0 00000 UNITED STATES
1 01000 ALABAMA
2 01001 Autauga County, AL
3 01003 Baldwin County, AL
4 01005 Barbour County, AL
Run Code Online (Sandbox Code Playgroud) 假设我们在Python Pandas中有一个数据框,如下所示:
df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})
Run Code Online (Sandbox Code Playgroud)
或者,以表格形式:
ids vals
aball 1
bball 2
cnut 3
fball 4
Run Code Online (Sandbox Code Playgroud)
如何过滤包含关键词"ball?"的行?例如,输出应为:
ids vals
aball 1
bball 2
fball 4
Run Code Online (Sandbox Code Playgroud) 在python2.7 +存在任何方式来做类似的东西:
{ something_if_true if condition else something_if_false for key, value in dict_.items() }
Run Code Online (Sandbox Code Playgroud)
我知道你可以用'if'做任何事情
{ something_if_true for key, value in dict_.items() if condition}
Run Code Online (Sandbox Code Playgroud) 我有一个列表'abc'和一个数据帧'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Run Code Online (Sandbox Code Playgroud)
我想将列表插入单元格1B,所以我想要这个结果:
A B
0 12 NaN
1 23 ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?
1)如果我使用这个:
df.ix[1,'B'] = abc
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
ValueError: Must have equal len keys and value when setting with an iterable
Run Code Online (Sandbox Code Playgroud)
因为它试图将列表(有两个元素)插入行/列但不插入单元格.
2)如果我使用这个:
df.ix[1,'B'] = [abc]
Run Code Online (Sandbox Code Playgroud)
然后它插入一个只有一个元素是'abc'列表([['foo', 'bar']])的列表.
3)如果我使用这个:
df.ix[1,'B'] = ', '.join(abc)
Run Code Online (Sandbox Code Playgroud)
然后它插入一个字符串:( foo, bar)但不是列表.
4)如果我使用这个:
df.ix[1,'B'] = [', '.join(abc)]
Run Code Online (Sandbox Code Playgroud)
然后它插入一个列表,但它只有一个元素(['foo, bar'])但不是我想要的两个(['foo', 'bar']).
感谢帮助!
我的新数据框和旧列表:
abc = ['foo', …Run Code Online (Sandbox Code Playgroud) 我试图绘制一条ROC曲线来评估我使用逻辑回归包在Python中开发的预测模型的准确性.我计算了真阳性率和假阳性率; 但是,我无法弄清楚如何正确地使用这些matplotlib并计算AUC值.我怎么能这样做?
当我想print在Python中执行命令并且我需要使用引号时,我不知道如何在不关闭字符串的情况下执行此操作.
例如:
print " "a word that needs quotation marks" "
Run Code Online (Sandbox Code Playgroud)
但是当我尝试做我上面做的事情时,我最终关闭了字符串,我不能把我需要的字放在引号之间.
我怎样才能做到这一点?
我一直在探索如何优化我的代码并运行pandas .at方法.根据文档
基于标签的快速标量访问器
与loc类似,at提供基于标签的标量查找.您也可以使用这些索引器进行设置.
所以我跑了一些样品:
import pandas as pd
import numpy as np
from string import letters, lowercase, uppercase
lt = list(letters)
lc = list(lowercase)
uc = list(uppercase)
def gdf(rows, cols, seed=None):
"""rows and cols are what you'd pass
to pd.MultiIndex.from_product()"""
gmi = pd.MultiIndex.from_product
df = pd.DataFrame(index=gmi(rows), columns=gmi(cols))
np.random.seed(seed)
df.iloc[:, :] = np.random.rand(*df.shape)
return df
seed = [3, 1415]
df = gdf([lc, uc], [lc, uc], seed)
print df.head().T.head().T
Run Code Online (Sandbox Code Playgroud)
df 好像:
a
A B C D E …Run Code Online (Sandbox Code Playgroud) 我使用这些说明在Ubuntu 12.04上安装了Neo4j:http://www.neo4j.org/download/linux
wget -O - http://debian.neo4j.org/neotechnology.gpg.key | apt-key add -
echo 'deb http://debian.neo4j.org/repo stable/' > /etc/apt/sources.list.d/neo4j.list
apt-get update
apt-get install neo4j
Run Code Online (Sandbox Code Playgroud)
我确保有正确的jdk:
root@precise64:~# java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)
当我启动neo4j时,我收到此错误:
警告:允许最多1024个打开文件,建议最少40 000个.请参阅Neo4j手册.
所以我按照这里的说明操作:http://docs.neo4j.org/chunked/1.6.2/configuration-linux-notes.html
并将这些内容添加到 /etc/security/limits.conf
neo4j soft nofile 40000
neo4j hard nofile 40000
Run Code Online (Sandbox Code Playgroud)
并取消注释这一行 /etc/pam.d/su
session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)
重新启动服务器后,我验证了新的限制
neo4j@precise64:~$ ulimit -n
40000
Run Code Online (Sandbox Code Playgroud)
然后我重启我的服务器.启动时我仍然遇到同样的错误.
root@precise64:~# service neo4j-service start
WARNING: Max …Run Code Online (Sandbox Code Playgroud) 如果我有一个空的数据帧:
columns = ['Date', 'Name', 'Action','ID']
df = pd.DataFrame(columns=columns)
Run Code Online (Sandbox Code Playgroud)
有没有办法将新行附加到这个新创建的数据框?目前我必须创建一个字典,填充它,然后在最后将字典附加到数据框.有更直接的方式吗?
python ×8
pandas ×5
dataframe ×4
dictionary ×1
group-concat ×1
insert ×1
linux ×1
list ×1
matplotlib ×1
mysql ×1
neo4j ×1
plot ×1
roc ×1
statistics ×1
string ×1
ubuntu ×1