python - 在 Stata/python 中合并相似的行

标签 python pandas numpy stata networkx

我正在为图表分析做一些数据准备,我的数据如下所示。

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/

相关文章:

python 将字符串转换为整数数组

python - 检测二维图像中的标记 [Python/OpenCV]

python - 激活 UART 的数据模式

python - 匹配两个dataframe中的两列,如果匹配得到对应的列值

numpy - 预期 conv2d_1_input 具有形状 (28, 28, 1) 但得到形状为 (1, 28, 28) 的数组

python - sympy 方程中的未知数学错误(python)

python - SqlAlchemy Python 多数据库

python - pandas 在通过条件选择时失败

python - 两个带有非唯一标签的 Pandas 系列的操作行为是什么?

python - 识别 pandas 数据框中列的数据类型的正确方法是什么?