如何从具有两列(auth1和auth2)的列表的合著者列表生成数据帧 一对一排
coauthors = []
coauthors.append((("f","g"),("f","h"),("g","h"))) # combinations of f,g,h
coauthors.append((("i","j"),("i","k"),("i","l"),("j","k"),("j","l"),("l","k"))) # combinations of i,j,k,l
coauthors.append((("a","b"))) # combinations of a,b
for s in coauthors:
print(*s)
旁白:为什么上面打印的最后一行不是('a','b'),而是a b
很难说你是否有这些价值观,或是对战斗进行了硬编码。但是如果您使用
itertools
,这会容易得多。创建一个列表列表,每个子列表都是您要从中创建配对的作者的分组,然后使用链和组合将所有配对放入DataFrame
输出:
如果您还需要为每个组添加一个唯一的
ID
,您可以合并一组较小的DataFrames
:或者,您可以将内容解压到包含3个元素列表的列表中,并调用
pd.DataFrame
一次:应该使用
extend
而不是append
来构建原始列表:这样做的效果是使用传递的iterable元素扩展原始列表,而不是将传递的iterable作为原始列表的单个新元素追加
还请注意,我在上面的最后一行中添加了一个逗号(以解决您的边问题中的问题)。这是告诉Python您想传递给
extend
一个元组(外部元组只包含一个元组)。如果没有这个额外的逗号,外括号将被忽略,Python认为您只传递元组('a', 'b')
这将给出长度为2的10个元组的列表,而不是使用
append
生成的嵌套结构。从这里,创建数据帧很容易:给予:
相关问题 更多 >
编程相关推荐