【问题标题】:Pandas Function does not reduce熊猫功能不减少
【发布时间】:2022-01-03 00:41:55
【问题描述】:

我尝试聚合包含 numpy 数组的列 不幸的是,我有一条错误消息功能没有减少

results = pd.DataFrame([['p1', 'v1', 1, 0 ,np.array([1,3, 4])], ['p1', 'v1', 2, 0 ,np.array([1,3, 4])],['p1', 'v1', 1, 1 ,np.array([1,3, 4])], ['p1', 'v1', 2, 1 ,np.array([1,3, 4])],['p1', 'v2', 1, 0 ,np.array([1,3, 4])], ['p1', 'v2', 2, 0 ,np.array([1,3, 4])],['p1', 'v2', 2, 1 ,np.array([1,3, 4])], ['p1', 'v2', 1, 1 ,np.array([1,3, 4])],['p1', 'v3', 1, 0 ,np.array([1,3, 4])], ['p1', 'v3', 2, 0 ,np.array([1,3, 4])],['p1', 'v3', 3, 0 ,np.array([1,3, 4])], ['p1', 'v3', 4, 0 ,np.array([1,3, 4])],['p1', 'v4', 1, 0 ,np.array([1,3, 4])], ['p1', 'v4', 2, 0 ,np.array([1,3, 4])],['p1', 'v4', 3, 0 ,np.array([1,3, 4])], ['p1', 'v4', 4, 0 ,np.array([1,3, 4])]],columns=['P', 'V', 'G', 'month', 'Values'])
resultsilter = results.query('V=="v1" or V=="v2"')
resultsilter = resultsilter.groupby(['G','month']).agg({'Values': 'sum'})
print(resultsilter)

我想得到这样的结果:

[[1, 0 ,np.array(2,6,8])],[2, 0 ,np.array([2,6,8])],[1, 1 ,np.array([2,6,8])],[2, 1 ,np.array([2,6,8])]]

有什么想法吗?

【问题讨论】:

标签: python arrays pandas numpy


【解决方案1】:

所以我阅读了 query() 方法并且有一个替代方法。这就是我所做的:

import pandas as pd
import numpy as np

results = pd.DataFrame([['p1', 'v1', 1, 0 ,np.array([1,3, 4])], ['p1', 'v1', 2, 0 ,np.array([1,3, 4])],['p1', 'v1', 1, 1 ,np.array([1,3, 4])], ['p1', 'v1', 2, 1 ,np.array([1,3, 4])],['p1', 'v2', 1, 0 ,np.array([1,3, 4])], ['p1', 'v2', 2, 0 ,np.array([1,3, 4])],['p1', 'v2', 2, 1 ,np.array([1,3, 4])], ['p1', 'v2', 1, 1 ,np.array([1,3, 4])],['p1', 'v3', 1, 0 ,np.array([1,3, 4])], ['p1', 'v3', 2, 0 ,np.array([1,3, 4])],['p1', 'v3', 3, 0 ,np.array([1,3, 4])], ['p1', 'v3', 4, 0 ,np.array([1,3, 4])],['p1', 'v4', 1, 0 ,np.array([1,3, 4])], ['p1', 'v4', 2, 0 ,np.array([1,3, 4])],['p1', 'v4', 3, 0 ,np.array([1,3, 4])], ['p1', 'v4', 4, 0 ,np.array([1,3, 4])]], columns=['P', 'V', 'G', 'month', 'Values'])
resultsilter = results[(results["V"] == "v1") | (results["V"] == "v2")] #this is the equivalent of  query('V=="v1" or V=="v2"')
resultsilter = resultsilter.groupby(['G','month']).agg({'Values': 'sum'})
resultsilter.reset_index(inplace=True)#fixes format after groupby().agg() is used
print(resultsilter.head())

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 2020-11-01
    • 2017-07-24
    • 1970-01-01
    • 2021-12-26
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多