【发布时间】:2020-01-20 20:22:30
【问题描述】:
我有以下两个数据框:
表 1:
Key1 Key2 Value1 Other Data
1 2 5 foo
3 1 6 bar
和
表 2:
Key1 Key2 Property1 Property2
1 2 5 7
3 1 6 8
1 3 7 7
2 1 4 4
2 1 6 6
2 1 8 5
在表 1 中,键的顺序无关紧要。表 1 没有重复项。 在表 2 中,键的顺序很重要。表 2 有重复项。 我对 pandas 很陌生,但据我了解 groupby 的概念,这应该是完美的工具。 我希望我能很好地解释我的问题。
编辑: 关于 cmets,我想拆分问题。
第一步: 合并表 1 和表 2。我认为这必须是分层的。
Key 1 Key 2 Value 1 Other Data Key1 Key2 Property1 Propterty2
1 2 5 foo 1 2 5 7
2 1 4 4
2 1 6 6
2 1 8 5
3 1 6 bar 3 1 6 8
1 3 7 7
Step2:根据值 1 过滤值。如果 属性 1=值 1 +- 1,则保留该条目,如果不删除它。在此处的示例中,这会导致:
Key 1 Key 2 Value 1 Other Data Key1 Key2 Property1 Propterty2
1 2 5 foo 1 2 5 7
2 1 4 4
2 1 6 6
3 1 6 bar 3 1 6 8
1 3 7 7
Step3:重塑和构建意味着: 建立所有剩余对的平均值(这里是 (2,1) 的两个条目的平均值)。然后重塑数据框。
Key 1 Key 2 Value 1 Other Data Property1(i,j) Propterty2(i,j) Property1(j,i) Propterty2(j,i)
1 2 5 foo 5 7 5 5
3 1 6 bar 6 8 7 7
Step4:处理缺失数据。如果我在表 2 中只有 (1,3) 的数据,但没有 (3,1) 的数据,那么他应该在步骤 3 中用 NaN 填充这些值。在最后一步中,我想删除所有带有 NaN 的行。
【问题讨论】:
-
“我希望我能很好地解释我的问题。” 不,不,你没有——至少对我来说是这样。前面的段落真的不清楚,难以阅读。您可能应该将此过程拆分为多个较小的步骤来理解,因为现在您似乎想在一个步骤中进行合并、聚合和过滤。
-
感谢您的提示。我试图将这个过程分成更小的步骤。我希望它有所帮助。
标签: python python-3.x pandas merge pandas-groupby