我想计算所有具有相似address1和address2的行的countX的平均值,或者计算地址值反转的情况。也就是说,address1=ad3和address2=ad1与address1=ad1和address2=ad3相似。你知道吗
例如, 如果输入是(csv文件):
ID COUNTX ADDRESS1 ADDRESS2
1 21 ad3 ad1
2 22 ad1 ad3
3 23 ad2 ad4
4 25 ad2 ad4
5 25 ad1 ad5
6 23 ad5 ad1
7 22 ad1 ad4
8 21 ad4 ad6
输出应为:
ID COUNTX ADDRESS1 ADDRESS2 AVG_cOUNTX
1 21 ad3 ad1 21.5
3 23 ad2 ad4 24
5 25 ad1 ad5 24
7 22 ad1 ad4 22
8 21 ad4 ad6 21
我试着做到以下几点:
因为我有大量的数据集(1-3百万),所以这需要非常高效(我的代码不是这样)。你知道吗
我使用的是python3.7和pandas包0.22。 任何反馈都将不胜感激。你知道吗
这里有一条路。可能还有其他更优雅的解决方案,但这应该可以完成这项工作,而且比嵌套循环效率要高得多。你知道吗
首先创建两个额外的列,我们称之为
'ADDRESS_1'
和'ADDRESS_2'
。前者将始终包含按字典顺序排列的最先出现的地址,从而允许您根据需要在这些新列上对数据进行分组,因为您不再需要担心地址反转的情况会被单独处理。你知道吗然后使用
groupby
:结果:
这与您的示例输出不同,因为地址顺序丢失,但是从您对问题的描述来看,我认为这并不重要。如果不是这样,请在下面发表评论。你知道吗
相关问题 更多 >
编程相关推荐