json - 如何从一个数据框中获取规则并将其应用于其他数据框以获取 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.....
解决方案
type
我相信您需要首先在两个 s 之间进行匹配DataFrame
,然后使用过滤列 by并在必要时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
推荐阅读
- javascript - 获取 html 文件而不是获取 json 并创建 html 会很糟糕吗?为什么?
- macos - 在 macos 10.13.6 上安装 Bazel 0.16.1 时权限被拒绝
- apache-spark - Spark 中的迭代 RDD/Dataframe 处理
- javascript - 路由器 click.native 在 Vue 中传递了错误的参数
- r - 无法让 R 读取 GPS 坐标
- firebase - Http 请求在 Google 助理的 Firebase webhook 中不起作用
- c++ - 如何在 LLVM 通行证中获取 C++ 析构函数?
- php - 修剪用户在 content.php wordpress 文件中输入的摘录
- python - H5 十六进制数据
- c# - 定义和捕获自定义类型的新自定义异常