Python 查询另一个数据帧查询的结果

Python 查询另一个数据帧查询的结果,python,sql,pandas,apache-spark,dataframe,Python,Sql,Pandas,Apache Spark,Dataframe,使用用于Python的spark和Pandas库。 我基本上有以下几点: df.groupby('sIP').agg({'duration': 'sum'}).show() 这给了我以下输出: +---------------+------------------+ | sIP| sum(duration)| +---------------+-----------------

使用用于Python的spark和Pandas库。 我基本上有以下几点:

df.groupby('sIP').agg({'duration': 'sum'}).show()
这给了我以下输出:

+---------------+------------------+                                            
|            sIP|     sum(duration)|
+---------------+------------------+
| 203.13.173.243|               0.0|
|  204.62.16.153|         17522.927|
|  203.30.177.95|             1.081|
|   56.23.191.99|           113.186|
持续时间内所有不同源IP地址的总和

我现在要做的是从这个总和中得到最大值,并得到相关的源IP。因此,我必须在数据帧被修改后查询它(上面的查询)

所以我试着:

df.groupby('sIP').agg({'duration': 'max'}).show()
但它仍然查询原始数据帧,如下所示:

+---------------+-------------+                                                 
|            sIP|max(duration)|
+---------------+-------------+
| 203.13.173.243|          0.0|
|  204.62.16.153|     1790.305|
|  203.30.177.95|        1.081|
|   56.23.191.99|       22.563|
是否仍要覆盖数据帧状态?我研究过转换,但没有成功,collect()是我研究过的另一个东西,但仍然没有任何结果

我错过了什么


提前感谢。

您可以使用
排序\u值
+
尾部

df.groupby('sIP').agg({'duration': 'sum'}).sort_values('sum(duration)').tail(1)
斯卡拉

皮斯帕克

import pyspark.sql.functions as F
df.groupBy("ip").agg(F.sum("duration").alias("sum_duration")).agg(F.max("sum_duration")).show()

您需要将第一次转换保存到新的数据帧,否则结果将被丢弃

df1 = df.groupby('sIP').agg({'duration': 'max'}).toDF('sIP', 'max_duration')
然后,您可以根据自己的喜好对新数据帧进行操作,即:

df1.sort('max_duration', ascending=False).show(1)
您可以在一次转换中同时执行这两项操作,而无需中间数据帧:

df.groupby('sIP').agg({'duration': 'max'}).sort('max(duration)', ascending=False).show(1)

我不能把它们结合在一起。但是第一个解决方案(单独的)非常有效。非常感谢。
df.groupby('sIP').agg({'duration': 'max'}).sort('max(duration)', ascending=False).show(1)