小编Dmi*_* B.的帖子

大熊猫:根据总数和平均值过滤出列

我有一个时间序列数据的数据框,其中的数值数据在列中。在绘制此数据时,我只想绘制某些被认为不足的序列。这是我选择要绘制的列的方式:

df.loc[:,  (df.iloc[-1] >= 100) & (df.sum() >= 1000)]
Run Code Online (Sandbox Code Playgroud)

换句话说,“显着”的标准是一系列值的总和超过1000,而最近的值至少为100。

然而,事实证明这是不够的。我需要的是,总和超过1000(和以前一样),但是我希望最后两行(两个最近的读数)的平均值超过100。

如何更改上面的滤波器以计算平均值?

在:

date           A    B    C   D
2016-04-01    80  235   99   0
2016-04-02    85  295  153  14
2016-04-03   111  363  224  14
2016-04-04   111  379  296  50
2016-04-05    11   51   29   5
Run Code Online (Sandbox Code Playgroud)

出:

date           B    C
2016-04-01   235   99
2016-04-02   295  153
2016-04-03   363  224
2016-04-04   379  296
2016-04-05    51   29
Run Code Online (Sandbox Code Playgroud)

pandas

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

计算熊猫系列趋势线的斜率

是否有一种惯用的方法来获取列中线性趋势线拟合值的斜率DataFrame?数据用DateTime索引编制索引。

python numpy pandas

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

这个SQL DELETE FROM语法有什么问题?

我正在尝试删除96k记录.

删除表xoops_bb_posts_text页面中没有匹配的post_id到xoops_bb_posts的所有记录

此查询返回91k记录:

SELECT *  
   FROM xoops_bb_posts_text t  
   WHERE not exists (
       select post_id 
           from xoops_bb_posts p 
           WHERE p.post_id = t.post_id 
   );  
Run Code Online (Sandbox Code Playgroud)

当我试图删除那些记录时,我得到了语法错误,但我没有看到它.

DELETE FROM xoops_bb_posts_text t  
WHERE not exists (
    select post_id 
       from xoops_bb_posts p 
    WHERE p.post_id = t.post_id 
);  
Run Code Online (Sandbox Code Playgroud)

错误在哪里?

错误

SQL查询:文档

DELETE FROM xoops_bb_posts_text t 
   WHERE NOT EXISTS (  
      SELECT post_id  
         FROM xoops_bb_posts p  
         WHERE p.post_id = t.post_id  
)  
Run Code Online (Sandbox Code Playgroud)

MySQL说:文档

#1064 - 您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'WHERE not exists'附近使用正确的语法(从第2行的xoops_bb_posts p WHERE p.post_id = t.post_中选择post_id)

mysql sql

4
推荐指数
2
解决办法
4064
查看次数

尝试在一个地方更改时,值列表中的多个位置的值会发生变化

python中的以下代码:

matrix = [[0]*3]*2
matrix[0][1] = 1
Run Code Online (Sandbox Code Playgroud)

看到要改变所有matrix[][1]位置的值,矩阵变为 [[0,1,0],[0,1,0]]代替[[0,1,0],[0,0,0]].

这是变量如何初始化的问题,或者是python中的默认行为.

另外,我如何一次只更改一个值.

python matrix

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

如何交换元组中的元素?

我有一个非常具体的问题,我需要知道如何交换列表或元组中的元素.我有一个名为board state的列表,我知道需要交换的元素.我该如何交换它们?在具有二维数组的java中,我可以轻松地执行标准交换技术,但是在这里它说元组赋值是不可能的.

这是我的代码:

board_state = [(0, 1, 2), (3, 4, 5), (6, 7, 8)]

new = [1, 1] # [row, column] The '4' element here needs to be swapped with original
original = [2, 1] # [row, column] The '7' element here needs to be swapped with new
Run Code Online (Sandbox Code Playgroud)

结果应该是:

board_state = [(0, 1, 2), (3, 7, 5), (6, 4, 8)]
Run Code Online (Sandbox Code Playgroud)

我如何交换?

python

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

使用 Python 将 dict 列表插入 MySQL

我想插入一个这样的列表,但要大得多。 list=[{"name":"Tom","gender":"male",},{"name":"Jack","gender":"male",},{"name":"Lee","gender":"male",}]使用python进入MySQL,建表。我已经导入了 MySQLdb 。那我该怎么办?

python mysql

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

摆脱全索引扫描

以下查询执行得很糟糕,因为P4FileReleases中有650万条记录的完整非聚集索引扫描,后跟散列连接.我正在寻找优化器通过搜索选择扫描的可能原因.

SELECT p4f.FileReleaseID 
   FROM P4FileReleases p4f
   INNER JOIN AnalyzedFileView af 
      ON p4f.FileRelease = (af.path+'#'+cast(af.revision as varchar))  
   WHERE (af.tracked_change_id = 1)
Run Code Online (Sandbox Code Playgroud)

据我所知,我认为优化器没有理由选择P4FileReleases的扫描.WHERE子句将右侧数据集的大小限制为大约1K的记录,优化器应该知道它(参见下面的直方图).

事实上,如果我获取视图数据并将其扔入堆表(与索引视图相同的结构),则执行查询,在较大的表上使用索引搜索,而不是使用散列连接(和总成本从145降至1左右.

关于什么可能抛出优化器的任何想法?

细节. Sql Server 2008(v.10.0.2757.0).

P4FileReleases表 持有650万条记录

CREATE TABLE [dbo].[P4FileReleases](
    [FileReleaseID] [int] IDENTITY(1,1) NOT NULL,
    [FileRelease] [varchar](254) NOT NULL,
    -- 5 more fields 
 CONSTRAINT [CIX_P4FileReleases_FileReleaseID_PK] PRIMARY KEY CLUSTERED 
(
    [FileReleaseID] ASC
),
CONSTRAINT [NCIX_P4FileReleases_FileRelease] UNIQUE NONCLUSTERED 
(
    [FileRelease] ASC
)
Run Code Online (Sandbox Code Playgroud)

AnalyzedFileView 是一个索引视图,其中包含统计信息并且已启用最新信息.

它有四列:

   key int (int, PK) - clustered index
   tracked_change_id (int, FK) - non-unique, non-clustered index (covering …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server query-optimization sql-server-2008

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

pandas:使用其他两列中的任何一列添加新列

pd.DataFrame({'A':[None,2,None,None,3,4],'B':[1,2,3,4,5,6]})

     A  B
0  NaN  1
1    2  2
2  NaN  3
3  NaN  4
4    3  5
5    4  6
Run Code Online (Sandbox Code Playgroud)

如果不是NaN,我如何添加C将从列中取值的列A,否则列B的值?

     A  B  C
0  NaN  1  1
1    2  2  2
2  NaN  3  3
3  NaN  4  4
4    3  5  3
5    4  6  4
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

熊猫:根据最后一行的值删除列

从这样的数据开始:

np.random.seed(314)
df = pd.DataFrame({
        'date':[pd.date_range('2016-04-01', '2016-04-05')[r] for r in np.random.randint(0,5,20)], 
        'cat':['ABCD'[r] for r in np.random.randint(0,4,20)], 
        'count': np.random.randint(0,100,20)
})

   cat  count       date
0    B     84 2016-04-04
1    A     95 2016-04-05
2    D     89 2016-04-02
3    D     39 2016-04-05
4    A     39 2016-04-01
5    C     61 2016-04-05
6    C     58 2016-04-04
7    B     49 2016-04-03
8    D     20 2016-04-02
9    B     54 2016-04-01
10   B     87 2016-04-01
11   D     36 2016-04-05
12   C     13 2016-04-05
13   A     79 2016-04-04
14   B …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用numpy将int转换为位数组

我需要一种方法将2000万个32位和64位整数转换成相应的位数组(因此这必须是内存/时间效率).根据SO 的不同问题/答案的建议,我试图通过使用来做到这一点numpy.unpackbits.在尝试这种方法时,我遇到了意想不到的结果:

np.unpackbits(np.array([1], dtype=np.uint64).view(np.uint8))
Run Code Online (Sandbox Code Playgroud)

生产:

array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)

我希望1元素是最后一个元素,但不是中间元素.所以我显然遗漏了保留字节顺序的东西.我错过了什么?

python numpy python-3.x

0
推荐指数
1
解决办法
2988
查看次数