【问题标题】:Group Rows in a DataFrame在 DataFrame 中对行进行分组
【发布时间】:2019-01-16 20:03:40
【问题描述】:

我有一个 DataFrame,其列类似于:

enter image description here

我想使用 'pd.groupby' 根据 ID 列对行进行分组。此外,我想使用 '.agg()' 将函数应用于每一列。

对于带有分数的列,我想应用“np.average”。例如,对于“Reliability Score Flow A”列,权重在“Flow A”列中,对于“Flow B”列中的“Reliability Score Flow B”列,以此类推。另一方面,对于有 Flows 的列,我只想使用 sum。

因此,预期的输出将类似于:

enter image description here

你是怎么做到的?

谢谢你,

【问题讨论】:

  • 你读过docs吗?
  • 您能否提供数据帧的样本以及您的预期输出?
  • @rahlf23,我已经更改了帖子。感谢您的帮助。
  • @jeschwar,是的,我有。但是,这是我第一次使用 Pandas,我正在边做边学。谢谢你的信息。

标签: python pandas numpy dataframe


【解决方案1】:

创建一个字典,展示如何聚合每一列。

dd = {k:'mean' for k in df.filter(regex='^Flow.*').columns.tolist()}
for i in df.filter(like='Relia'):
    dd[i] = 'sum'
dd

输出:

{'Flow A': 'mean',
 'Flow B': 'mean',
 'Flow C': 'mean',
 'Flow D': 'mean',
 'Flow E': 'mean',
 'Reliabilty Score Flow A': 'sum',
 'Reliabilty Score Flow B': 'sum',
 'Reliabilty Score Flow C': 'sum',
 'Reliabilty Score Flow D': 'sum',
 'Reliabilty Score Flow E': 'sum'}

然后将groupbyagg 和字典一起使用,dd:

df.groupby('ID').agg(dd).reindex(df.columns[1:], axis=1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 2019-10-03
    • 2013-12-06
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多