我有如下所示的数据框.我需要获取B列的标量值,这取决于A的值(这是我脚本中的变量).我正在尝试loc()函数,但它返回一个Series而不是标量值.如何获得标量值()?
>>> x = pd.DataFrame({'A' : [0,1,2], 'B' : [4,5,6]})
>>> x
A B
0 0 4
1 1 5
2 2 6
>>> x.loc[x['A'] == 2]['B']
2 6
Name: B, dtype: int64
>>> type(x.loc[x['A'] == 2]['B'])
<class 'pandas.core.series.Series'>
Run Code Online (Sandbox Code Playgroud) 我在SUSE Linux Enterprise 10/11计算机上.我将回归发送到运行英特尔处理器的计算机的农场.我的一些测试失败是因为我的工具是使用需要AVX/AVX2指令支持的库构建的.我收到一个Illegal exception错误.
在Linux中,是否有任何命令可用于确定什么是CPU代码/系列名称?
我相信AVX和AVX2分别可以从Intel SandyBridge和Haswell系列开始.
我在SUSE Enterprise Linux 11上使用GCC 4.7.2和Boost 1.58.0.我有以下代码片段,它基本上通过一个多边形列表来计算它们的长度/宽度.当使用带有std :: minmax函数的'auto'关键字时,我看到了奇怪的输出.为了比较,我还声明了第二个变量,其中明确声明了类型(即dim vs dim1).
namespace gtl = boost::polygon;
typedef gtl::polygon_90_data<int> LayoutPolygon;
typedef gtl::rectangle_data<int> LayoutRectangle;
static LayoutFeatureVec
calc_stats(LayoutPolygonSet const& lp)
{
LayoutFeatureVec v;
LayoutFeature f;
LayoutRectangle y;
for (LayoutPolygon const& p : lp) {
// Compute bounds.
gtl::extents(y, p);
// Get width/length (shorter/longer).
// FIXME: Why does this not work with auto??
cout << gtl::delta(y, gtl::HORIZONTAL) << " " << gtl::delta(y, gtl::VERTICAL) << endl;
auto dim = std::minmax(gtl::delta(y, gtl::HORIZONTAL),
gtl::delta(y, gtl::VERTICAL));
std::pair<int, int> dim1 = …Run Code Online (Sandbox Code Playgroud) 我有一些点文件(有向图)我需要在Python中读取并从节点中提取一些值来填充我的数据结构.我看到Python有两个graphviz包:graphviz和pygraphviz.两者之间有什么大的区别吗?从文档的快速滚动,他们似乎做了同样的事情.我将在Python 2.7.X中使用它来完成上述任务.
我有std::set<int>(s)和std::vector<int>(v).保证向量是有序/唯一的.我想知道v的所有元素是否都在s中(或者只是停在v的第一个元素而不是s中).我可以将v转换为set并执行== test,但是有没有更改容器类型的另一种方法?
我有一个形状(RxC)1.5M x 128的数据帧.我执行以下操作:
所以我的(pesudo)代码:
<df = Read dataframe from file>
g = df.groupby(grp_cols)
g[nongrp_cols].apply(lambda d: d.apply(lambda s: s.value_counts()) / len(d.index))
代码对我来说工作正常,所以现在我正在分析它以提高性能.apply()函数运行大约需要20-25分钟.我认为问题是它是在每列(122次)上迭代8700次(每个子组),这可能不是最好的方式(给定我编码的方式).
任何人都可以推荐一些方法来加快速度吗?
我尝试使用python多处理池(8个进程)将子组划分为相同的集合进行处理,但最终得到一些酸洗错误...
谢谢.
我正在使用Pandas 0.18.1和python 2.7.x. 我有一个空的数据帧,我先读了.我看到这些列的类型object是可以的.当我分配一行数据时,数值的类型将更改为float64.我期待int或int64.为什么会这样?
有没有办法设置一些全局选项让Pandas知道数字值,默认情况下将它们视为int除非数据有.?例如,[0 1.0, 2.]第一列是int其他两个float64?
例如:
>>> df = pd.read_csv('foo.csv', engine='python', keep_default_na=False)
>>> print df.dtypes
bbox_id_seqno object
type object
layer object
ll_x object
ll_y object
ur_x object
ur_y object
polygon_count object
dtype: object
>>> df.loc[0] = ['a', 'b', 'c', 1, 2, 3, 4, 5]
>>> print df.dtypes
bbox_id_seqno object
type object
layer object
ll_x float64
ll_y float64
ur_x float64
ur_y …Run Code Online (Sandbox Code Playgroud) 我有一个包含列的数据框A,B,C.我有一个像元组的列表[(x1,y1), (x2,y2), ...].我想删除满足以下条件的所有行:
(B=x1 && C=y1) | (B=x2 && C=y2) | ...我怎么能在熊猫中做到这一点?我想使用该isin函数,但不确定是否可以,因为我的列表有元组.我可以这样做:
for x,y in tuples:
df = df.drop(df[df.B==x && df.C==y].index)
Run Code Online (Sandbox Code Playgroud)
也许有一种更简单的方法.
请考虑以下数据帧.我想计算一个字符串中出现的'$'的数量.我str.count在pandas中使用该函数(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.count.html).
>>> import pandas as pd
>>> df = pd.DataFrame(['$$a', '$$b', '$c'], columns=['A'])
>>> df['A'].str.count('$')
0 1
1 1
2 1
Name: A, dtype: int64
Run Code Online (Sandbox Code Playgroud)
我期待结果[2,2,1].我究竟做错了什么?
在Python中,count字符串模块中的函数返回正确的结果.
>>> a = "$$$$abcd"
>>> a.count('$')
4
>>> a = '$abcd$dsf$'
>>> a.count('$')
3
Run Code Online (Sandbox Code Playgroud) 我有这样的数据帧:
col1, col2
A 0
A 1
B 2
C 3
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
{ A: [0,1], B: [2], C: [3] }
Run Code Online (Sandbox Code Playgroud)
我试过了:
df.set_index('col1')['col2'].to_dict()
Run Code Online (Sandbox Code Playgroud)
但这不太正确.我的第一个问题是'A'重复,我最终得到A:1(0被覆盖).怎么修?