计算两者之间的通信频次,也就是将两列数据按行进行合并,并计数,使用python实现
From | To |
---|---|
A | B |
B | A |
A | C |
C | A |
A | B |
groupby函数实现了完全相同行的合并和技术,但位置交换的行未实现合并,希望能使B到A也合并到A到B的计次结果
temp = [[name[0],name[1],len(group)] for name,group in df.groupby(['From','To'])]
data_re = pd.DataFrame(temp,columns=['From','To','Count'])
From | To | Count |
---|---|---|
A | B | 2 |
A | C | 1 |
B | A | 1 |
C | A | 1 |
From | To | Count |
---|---|---|
A | C | 2 |
A | B | 3 |
望采纳,已写好代码如下
# 首先需要导入相关的包
import pandas as pd
# 定义dataframe,包含from和to两列
df = pd.DataFrame({'From': [1, 1, 2, 3, 3, 3, 4, 4, 5], 'To': [3, 5, 5, 1, 2, 4, 5, 3, 4]})
# 计算两者之间构建的pair计数,from和to调换顺序也算同一个pair
# 首先将from和to两列进行排序
df[['From', 'To']] = df[['From', 'To']].apply(lambda x: sorted(x), axis=1)
# 然后按照from和to两列分组,并统计每组的个数
result = df.groupby(['From', 'To']).size()
# 最后输出统计结果
print(result)