【问题标题】:Capturing Pandas aggregation in to Lists将 Pandas 聚合捕获到列表中
【发布时间】:2021-04-17 07:38:37
【问题描述】:

我有一列具有日期时间的数据和另一列具有数字字段(长度)的数据,我可以按如下方式聚合,其中我按日期时间分组并获取所有长度的最小值/平均值/最大值。

代码:

df.groupby(['DateTime']).agg({'Length': ['min', 'mean', 'max']})

输出:

                    Length                   
                            min         mean   max
DateTime                                          
2020-11-24 14:30:00         118  1172.712000  1505
2020-11-24 14:30:01         118  1246.719495  1508
2020-11-24 14:30:02         115  1062.351156  1508

我需要一种简单的方法来在一组列表中捕获此输出,如下所示:

outputdatelist=[2020-11-24 14:30:00, 2020-11-24 14:30:01,...]
outputlen_min=[118, 118, 115]

同样适用于平均值,最大值。

有办法吗?

【问题讨论】:

  • outputdatelist = df.DateTime.tolist()?
  • @sharathnatraj,我需要捕获 df.groupby(....) 的输出,而不是 df 的单个元素。希望澄清。
  • 是的,我明白了.. 只需 df1 = df.groupby(['DateTime']).agg({'Length': ['min', 'mean', 'max']}).reset_index() 然后 outputdatelist = df1.DateTime.tolist()

标签: pandas list pandas-groupby


【解决方案1】:

假设输入 df 如下所示,

     DateTime  Length
0  2018-01-01     100
1  2018-02-01     100
2  2018-03-01     100
3  2018-04-01     100
4  2018-05-01     100

试试代码:

df1 = df.groupby(['DateTime']).agg({'Length': ['min', 'mean', 'max']}).reset_index()
outputdatelist = df1['DateTime'].tolist()
outputlen_min =  df1['Length']['min'].tolist()

打印:

print(outputdatelist)
['2018-01-01', '2018-02-01', '2018-03-01', '2018-04-01', '2018-05-01']
print(outputlen_min)
[100, 100, 100, 100, 100]

meanmax 列也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2017-07-20
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2019-12-22
    相关资源
    最近更新 更多