小编dat*_*pug的帖子

PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号

我来自sql背景,我经常使用以下数据处理步骤:

  1. 通过一个或多个字段对数据表进行分区
  2. 对于每个分区,在每个行中添加一个rownumber,将行按一个或多个其他字段排序,分析人员指定升序或降序

EX:

df = pd.DataFrame({'key1' : ['a','a','a','b','a'],
           'data1' : [1,2,2,3,3],
           'data2' : [1,10,2,3,30]})
df
     data1        data2     key1    
0    1            1         a           
1    2            10        a        
2    2            2         a       
3    3            3         b       
4    3            30        a        
Run Code Online (Sandbox Code Playgroud)

我正在寻找如何做PANDAS相当于这个SQL窗口函数:

RN = ROW_NUMBER() OVER (PARTITION BY Key1 ORDER BY Data1 ASC, Data2 DESC)


    data1        data2     key1    RN
0    1            1         a       1    
1    2            10        a       2 
2    2            2         a       3
3    3            3         b       1
4    3            30 …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

31
推荐指数
4
解决办法
4万
查看次数

Python元组vs生成器

我有一个问题,理解为什么以下行之一返回生成器和另一个元组.

如何在第二行中创建生成器的确切原因和原因,而在第三行中生成一个元组?

sample_list = [1, 2, 3, 4]
generator = (i for i in sample_list)
tuple_ = (1, 2, 3, 4)

print type(generator)
<type 'generator'>

print type(tuple_)
<type 'tuple'>    
Run Code Online (Sandbox Code Playgroud)

是因为元组是不可变对象,当我尝试解压缩里面的列表时(),它不能创建元组,因为它必须更改元组元组.

python iterator tuples python-2.7 python-3.x

10
推荐指数
2
解决办法
2142
查看次数

如何使用array_remove Spark SQL内置函数删除null

Spark 2.4引入了新的有用的涉及数组的Spark SQL函数,但是当我发现:select array_remove(array(1, 2, 3, null, 3), null)is null和not 的结果时,我有点困惑 [1, 2, 3, 3].

这是预期的行为吗?是否可以使用删除空值array_remove

附带说明一下,目前我正在使用的替代方法是databricks中的高阶函数:

select filter(array(1, 2, 3, null, 3), x -> x is not null)

apache-spark apache-spark-sql

5
推荐指数
4
解决办法
1066
查看次数

将 pandas 数据框导出到 HTML 中的可排序表

有没有办法将 pandas 数据框导出到 HTML 文件中,并合并一些额外的代码,使输出可按列排序?

我一直在使用 Dash DataTable 为用户提供对结果进行排序的选项,但我想知道是否有另一种方法不需要运行服务器,用户只需加载 HTML 页面并对结果进行排序。

到目前为止,我已经能够基于这篇 SO post进行半交互式绘图,但我想在 HTML 中添加可排序的表格,在网上搜索后,我不清楚最好的方法是什么(仍然是一个新手) HTML)

html dataframe pandas plotly plotly-dash

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

Python Pandas - 突出显示数据框中的单元格

我想测试列的值是否大于同一数据帧的另一个特定值。如果值较大,我想突出显示该特定单元格。

我试过这个:

import pandas as pd

b = pd.DataFrame([[5,7,3],[2,3,4],[8,4,7]])

for i in range(0, len(b)):
    for j in range(0, len(b.columns)):
        if  b.iloc[i][j] >  b.iloc[2][j]:
            b.style.applymap(lambda  x: 'background-color : blue' if b.iloc[i][j] >  b.iloc[2][j] else '') 

b
Run Code Online (Sandbox Code Playgroud)

因此,在这个例子中,我想检查 5 或 7 是否大于 3(第 1 列)、2 或 3 是否大于 4(第 2 列)以及 8 或 4 是否大于 7。

它不会染色任何东西...我希望有人能帮助我。提前谢谢。

python pandas

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