python - Python Pandas - groupby 以另一个数据框为条件
问题描述
我有两个数据框,它们的大小(行/日期索引和列/公司)相同。我现在要做的是根据 Dataframe2 中包含的逻辑计算 Dataframe1 中观察的时间序列统计信息。例如,我想根据排名(Dataframe2)计算时间序列平均观察值(Dataframe1)
所以某种分组程序除了我使用第二个数据框作为条件之外。
很高兴有任何输入,因为我找不到类似的问题!
Dataframe1
----------------------------------
A B C D E F G H
31.12.2009 30 66 NaN NaN NaN NaN 393 57
01.01.2010 30 66 NaN NaN NaN NaN 393 57
04.01.2010 31 66 NaN NaN NaN NaN 404 57
05.01.2010 33 66 NaN NaN NaN NaN 400 58
06.01.2010 33 66 NaN NaN NaN NaN 400 58
Dataframe2
----------------------------------
A B C D E F G H
31.12.2009 1.0 2.0 NaN NaN NaN NaN 2.0 1.0
01.01.2010 1.0 2.0 NaN NaN NaN NaN 2.0 1.0
04.01.2010 1.0 1.0 NaN NaN NaN NaN 2.0 2.0
05.01.2010 1.0 2.0 NaN NaN NaN NaN 1.0 2.0
06.01.2010 2.0 2.0 NaN NaN NaN NaN 1.0 1.0
Desired output
----------------------------------
1.0 2.0
31.12.2009 43.5 229.5
01.01.2010 43.5 229.5
04.01.2010 48.5 230.5
05.01.2010 216.5 62.0
06.01.2010 229.0 49.5
解决方案
您可以使用字典理解来创建结果数据框。
当在 中不满足特定值时,每列都是使用nanwhere
替换值来生成的,以便能够对的每个值使用overaxis=1df1
df2
mean
unique
df2
df_res = pd.DataFrame({col: df1.where(df2.eq(col)).mean(1) for col in df2.stack().unique()})
print (df_res)
1.0 2.0
31.12.2009 43.5 229.5
01.01.2010 43.5 229.5
04.01.2010 48.5 230.5
05.01.2010 216.5 62.0
06.01.2010 229.0 49.5
推荐阅读
- python - 我不明白他们如何初始化当前的解决方案。有人可以解释这是做什么的吗?
- c++ - 无法找到内存泄漏的位置
- apache-kafka - 使用 Oracle DB 时 Kafka 连接器的正确属性是什么
- mysql - 在mysql触发器中找到新记录时无法更新触发表中的记录
- node.js - 在heroku中部署项目时出错,错误代码=H10 desc =“App crashed”
- neo4j - Cypher 按多个值查找和排序
- c - 矩阵 A 和 B 与 C 中的“AND”和“OR”运算的逻辑乘法
- firebase - 从 Firestore 读取和解析数据--- Flutter
- scrapy - 如何以自己的用户名运行scrapyd?
- sql-server - 选择行值的一部分类似于同一列中的另一个值的所有行