如何从一个数据框中获取规则并将其应用于其他数据框以获取 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】:
我相信您需要首先在两个DataFrame
s 之间匹配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 数据框中? [复制]
Pandas 如何从 JSON 索引列表并将其放入数据框中?