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

Posted

技术标签:

【中文标题】如何从一个数据框中获取规则并将其应用于其他数据框以获取 python 中的统计信息?【英文标题】:How to get the rules from one dataframe and apply it to other dataframe to get the stats in python? 【发布时间】:2020-09-20 19:40:26 【问题描述】:

如图所示,我有两个数据框 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 获取满足它的行。

for 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.....

【问题讨论】:

df1 和 df2 的列名好像一样,你可以尝试通过for df in [df1,df2]:迭代它们 不,请不要遍历 dfs,绝对没有理由这样做。最好尝试df1.type.str.split('_').to_list() 之类的方法来获取群组,然后尝试groupby 等。 迭代将花费大量时间,这是不可接受的。 @tianlinhe 【参考方案1】:

我相信您需要首先在两个DataFrames 之间匹配type,然后使用df2 的过滤列DataFrame.merge 并在必要时聚合sum

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

【讨论】:

以上是关于如何从一个数据框中获取规则并将其应用于其他数据框以获取 python 中的统计信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 imdb 获取更多信息并将其保存在 pandas 数据框中? [复制]

如何从文本框中获取数据并将其添加到 dataTable?

Pandas 如何从 JSON 索引列表并将其放入数据框中?

如何获取每个打开窗口的名称列表并将其放入数据框中?

如何从嵌套 Json 数组角度 2 打印和分离键和值并将其添加到选择框中

如何从数据框中提取值以用于条件格式,同时一次将其应用于某些选择类别或数据条目?