我正在为图表分析做一些数据准备,我的数据如下所示。
country1 country2 pair volume
USA CHN USA_CHN 10
CHN USA CHN_USA 5
AFG ALB AFG_ALB 2
ALB AFG ALB_AFG 5
我想把它们组合起来
country1 country2 pair volume
USA CHN USA_CHN 15
AFG ALB AFG_ALB 7
在 Stata 或 Python 中有没有一种简单的方法可以让我这样做?我尝试制作一个重复的数据框并将“对”重命名为 country2_country1,然后合并它们,并删除重复的卷,但这是一种处理事情的毛茸茸的方法:我想知道是否有更好的方法。
如果知道的话,我的数据格式是针对有向图的,我正在将其转换为无向图。
最佳答案
您的 key 必须由两个国家的集合组成,这样无论顺序如何,它们都比较相等。在 Python/Pandas 中,这可以按如下方式完成。
import pandas as pd
import io
# load in your data
s = """
country1 country2 pair volume
USA CHN USA_CHN 10
CHN USA CHN_USA 5
AFG ALB AFG_ALB 2
ALB AFG ALB_AFG 5
"""
data = pd.read_table(io.BytesIO(s), sep='\s+')
# create your key (using frozenset instead of set, since frozenset is hashable)
key = data[['country1', 'country2']].apply(frozenset, 1)
# group by the key and aggregate using sum()
print(data.groupby(key).sum())
这导致
volume
(CHN, USA) 15
(AFG, ALB) 7
这并不完全是您想要的,但您应该能够从此处将其调整为正确的形状。
关于python - 在 Stata/python 中合并相似的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068608/