相关疑难解决方法(0)

Python Pandas:使用groupby()和agg()时是否保留了顺序?

我经常使用用过的pandas agg()函数来对data.frame的每一列运行汇总统计.例如,以下是产生均值和标准差的方法:

df = pd.DataFrame({'A': ['group1', 'group1', 'group2', 'group2', 'group3', 'group3'],
                   'B': [10, 12, 10, 25, 10, 12],
                   'C': [100, 102, 100, 250, 100, 102]})

>>> df
[output]
        A   B    C
0  group1  10  100
1  group1  12  102
2  group2  10  100
3  group2  25  250
4  group3  10  100
5  group3  12  102
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,将各行发送到agg函数的顺序无关紧要.但请考虑以下示例,其中:

df.groupby('A').agg([np.mean, lambda x: x.iloc[1] ])

[output]

        mean  <lambda>  mean  <lambda>
A                                     
group1  11.0        12   101       102
group2  17.5        25   175       250
group3  11.0 …
Run Code Online (Sandbox Code Playgroud)

python aggregate pandas

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

Pandas分组在一列上,另一列python上有最大日期

我有一个包含以下数据的数据框:

invoice_no  dealer  billing_change_previous_month        date
       110       1                              0  2016-12-31
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
      5635       2                          58730  2016-12-31
Run Code Online (Sandbox Code Playgroud)

我想只有一个拥有最长日期的经销商.所需的输出应该是这样的:

invoice_no  dealer  billing_change_previous_month        date
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
Run Code Online (Sandbox Code Playgroud)

每个经销商应该与最大日期不同,提前感谢您的帮助.

python-2.7 pandas

11
推荐指数
2
解决办法
4886
查看次数

根据每个唯一 ID 的最新时间戳过滤数据帧

标题可能有点令人困惑,所以这里是一个例子:

从:

id |     timestamp
 1 | 2015-12-02 00:00:00
 1 | 2015-12-03 00:00:00  <--- latest for id 1
 2 | 2015-12-02 00:00:00
 2 | 2015-12-04 00:00:00
 2 | 2015-12-06 00:00:00  <--- latest for id 2
Run Code Online (Sandbox Code Playgroud)

对此:

id |     timestamp
 1 | 2015-12-03 00:00:00
 2 | 2015-12-06 00:00:00
Run Code Online (Sandbox Code Playgroud)

python timestamp dataframe pandas

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

熊猫分组并找到所有列的第一个非空值

我有熊猫 DF 如下,

id  age   gender  country  sales_year
1   None   M       India    2016
2   23     F       India    2016
1   20     M       India    2015
2   25     F       India    2015
3   30     M       India    2019
4   36     None    India    2019
Run Code Online (Sandbox Code Playgroud)

我想按 id 分组,根据 sales_date 取最新的 1 行,所有非空元素。

预期输出,

id  age   gender  country  sales_year
1   20     M       India    2016
2   23     F       India    2016
3   30     M       India    2019
4   36     None    India    2019
Run Code Online (Sandbox Code Playgroud)

在pyspark中,

df = df.withColumn('age', f.first('age', True).over(Window.partitionBy("id").orderBy(df.sales_year.desc())))
Run Code Online (Sandbox Code Playgroud)

但我需要在熊猫中相同的解决方案。

编辑:: …

python group-by window pandas pyspark

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