Meta:很抱歉标题措辞不好,我真的不知道如何用一句话来描述我所问的内容。
我有一个字符串列表,如下所示:
'word1, word2, word3'
'word2, word3'
'word4, word3, word1'
'word2, word4'
我想从该数组中生成一个网络图,这需要将我的数据结构化为熊猫的数据帧,如下所示:
source, target, frequency
word1, word2, 1
word1, word3, 1
word2, word3, 2
word2, word4, 1
等。
我将如何做到这一点?
您可以遍历字符串,将它们拆分为逗号后跟空格,并使用IT.combinations
形成所有单词对。可以使用collections.Counter
来计算货币对的频率。最后,可以从Counter
中的项目构建所需的数据帧:
import collections
import itertools as IT
import pandas as pd
data = ['word1, word2, word3',
'word2, word3',
'word4, word3, word1',
'word2, word4']
result = collections.Counter()
for item in data:
for pair in IT.combinations(item.split(', '), 2):
result[tuple(sorted(pair))] += 1
df = pd.DataFrame([pair+(freq,) for pair, freq in result.items()], columns=['source', 'target', 'freqency'])
print(df)
收益 率
source target freqency
0 word3 word4 1
1 word2 word4 1
2 word1 word3 2
3 word1 word2 1
4 word1 word4 1
5 word2 word3 2