将 pandas 数据帧转换为用于网络分析的数据帧
Converting pandas dataframe into a dataframe for network analysis
我阅读了多个问题,但没有看到解决方案或遗漏了什么
我有一个数据框
Author_id Article_id Rank
100 10 1
101 10 2
102 10 3
100 11 1
105 11 2
106 11 3
预期输出:
Author_id1 Author_id2 Article_id Rank
100 101 10 1
100 102 10 1
100 105 11 1
100 106 11 1
101 100 10 2
101 102 10 2
102 100 10 3
102 101 10 3
105 100 11 2
105 106 11 2
106 100 11 3
106 105 11 3
如果我对所需数据集的理解不正确,请告知如何重组此数据。谢谢!
如果 DataFrame 在 ['Author_id', 'Article_id']
上没有重复,您可以在文章中执行 self-merge,并过滤掉与它们自己合并的行。
df1 = (df.merge(df.drop(columns='Rank'), on='Article_id', suffixes = ['1', '2'])
.query('Author_id1 != Author_id2')
.sort_values(['Author_id1', 'Rank'])
.reset_index(drop=True))
Author_id1 Article_id Rank Author_id2
0 100 10 1 101
1 100 10 1 102
2 100 11 1 105
3 100 11 1 106
4 101 10 2 100
5 101 10 2 102
6 102 10 3 100
7 102 10 3 101
8 105 11 2 100
9 105 11 2 106
10 106 11 3 100
11 106 11 3 105
我阅读了多个问题,但没有看到解决方案或遗漏了什么
我有一个数据框
Author_id Article_id Rank
100 10 1
101 10 2
102 10 3
100 11 1
105 11 2
106 11 3
预期输出:
Author_id1 Author_id2 Article_id Rank
100 101 10 1
100 102 10 1
100 105 11 1
100 106 11 1
101 100 10 2
101 102 10 2
102 100 10 3
102 101 10 3
105 100 11 2
105 106 11 2
106 100 11 3
106 105 11 3
如果我对所需数据集的理解不正确,请告知如何重组此数据。谢谢!
如果 DataFrame 在 ['Author_id', 'Article_id']
上没有重复,您可以在文章中执行 self-merge,并过滤掉与它们自己合并的行。
df1 = (df.merge(df.drop(columns='Rank'), on='Article_id', suffixes = ['1', '2'])
.query('Author_id1 != Author_id2')
.sort_values(['Author_id1', 'Rank'])
.reset_index(drop=True))
Author_id1 Article_id Rank Author_id2
0 100 10 1 101
1 100 10 1 102
2 100 11 1 105
3 100 11 1 106
4 101 10 2 100
5 101 10 2 102
6 102 10 3 100
7 102 10 3 101
8 105 11 2 100
9 105 11 2 106
10 106 11 3 100
11 106 11 3 105