首页 > 解决方案 > 如何从一个数据框中获取规则并将其应用于其他数据框以获取 python 中的统计信息?

问题描述

如图所示,我有两个数据框 df1 和 df2

  type  follow  following  sum   count                      
0 i_12    hard    norm     250     1                    
1 i_45    norm    norm     450     2                    
2 k_2     ease    hard     345     5                    
3 i_8     hard    norm     56      1                    
4 j_9     ease    ease     5       5

    type   follow  following  sum   count
0  i_group  hard    norm       780   67
1  i_group  norm    norm       567   7
2  k_group  ease    hard       678   5
3  j_group  ease    ease       5     5

在这里,[follow & following] 列是规则,[sum & count] 是相同的统计数据。
我想编写一个代码,该代码将从 df2 获取规则并键入规则将应用于 df1 并从 df1 获取满足它的行。

对于 ex
[i_12, i_45, i_8] 属于 "i_group",对于不同的规则,它们具有不同的统计信息。

所以我只需要从 df2 传递 column[type, follow, following] ,它应该从 df1 返回结果,如下所示。

 type   follow  following  sum   count
i_group hard     norm      306    2           #WHICH IS A SUM OF ROW 0 AND 3 
i_group norm     norm      56     1           #and so on.....

标签: jsonpython-3.xpandasalgorithmnumpy

解决方案


type我相信您需要首先在两个 s 之间进行匹配DataFrame,然后使用过滤列 by并在必要时df2使用最后一个聚合:DataFrame.mergesum

df = (df1.assign(type=df1['type'].replace('\d+', 'group', regex=True))
         .merge(df2[['type','follow','following']])
         .groupby(['type','follow','following'], as_index=False).sum())

print (df)
      type follow following  sum  count
0  i_group   hard      norm  306      2
1  i_group   norm      norm  450      2
2  j_group   ease      ease    5      5
3  k_group   ease      hard  345      5

推荐阅读