我来自sql背景,我经常使用以下数据处理步骤:
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) 我有一个问题,理解为什么以下行之一返回生成器和另一个元组.
如何在第二行中创建生成器的确切原因和原因,而在第三行中生成一个元组?
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)
是因为元组是不可变对象,当我尝试解压缩里面的列表时(),它不能创建元组,因为它必须更改元组元组.
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)
有没有办法将 pandas 数据框导出到 HTML 文件中,并合并一些额外的代码,使输出可按列排序?
我一直在使用 Dash DataTable 为用户提供对结果进行排序的选项,但我想知道是否有另一种方法不需要运行服务器,用户只需加载 HTML 页面并对结果进行排序。
到目前为止,我已经能够基于这篇 SO post进行半交互式绘图,但我想在 HTML 中添加可排序的表格,在网上搜索后,我不清楚最好的方法是什么(仍然是一个新手) HTML)
我想测试列的值是否大于同一数据帧的另一个特定值。如果值较大,我想突出显示该特定单元格。
我试过这个:
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。
它不会染色任何东西...我希望有人能帮助我。提前谢谢。
pandas ×3
python ×3
dataframe ×2
apache-spark ×1
html ×1
iterator ×1
numpy ×1
plotly ×1
plotly-dash ×1
python-2.7 ×1
python-3.x ×1
tuples ×1