在使用*解压zip()函数中的字段列表时遇到困难

2024-04-27 03:12:35 发布

您现在位置:Python中文网/ 问答频道 /正文

此问题与以下线程有关:

How would you zip an unknown number of lists in Python?

我正在使用一个dataframe(合并的数据),它有两个字段(“campaignName”和“creativeName”),我想在这两个字段中生成一个值的成对组合列表。根据上面的指导,以下是我认为可以做到的代码:

print varlist

print merged_data[varlist]

combo = zip(*merged_data[varlist])

print combo

combo2 = zip(merged_data[varlist[0]], merged_data[varlist[1]])

print combo2

但是下面是两个zip命令的结果(我原以为会产生一个相同的元组列表):

['campaigname','creativeName']

            campaignName         creativeName
0   MMedia Whatsapp 12-24-14  Pic1-Angle1-300x250
1   MMedia Whatsapp 12-24-14  Pic1-Angle1-300x250
...
89  MMedia Whatsapp 12-25-14  Pic4-Angle1-300x250
[90 rows x 2 columns]

[('c', 'c'), ('a', 'r'), ('m', 'e'), ('p', 'a'), ('a', 't'), ('i', 'i'), ('g', 'v'), ('n', 'e'), ('N', 'N'), ('a', 'a'), ('m', 'm'), ('e', 'e')]
[('MMedia Whatsapp 12-24-14', 'Pic1-Angle1-300x250'), ('MMedia Whatsapp 12-24-14', 'Pic1-Angle1-300x250'), ('MMedia Whatsapp 12-24-14', 'Pic1-Angle1-300x250'), ..., ('MMedia Whatsapp 12-25-14', 'Pic4-Angle1-300x250')]

知道怎么回事吗?显然,在第一种情况下,它将['campaignName','creativeName']视为一个字符串,在第二种情况下,它将它们视为数据帧中的字段,然后查看其中的值。你知道吗

感谢您的帮助。提前谢谢!你知道吗


Tags: 数据列表datamergedzipwhatsappprintcombo
1条回答
网友
1楼 · 发布于 2024-04-27 03:12:35

这两种说法其实并不相同:

combo1=zip(*combo = zip(*merged_data[varlist])

相当于:

combo1=zip(merged_data[varlist][0],merged_data[varlist][1],merged_data[varlist][2]....)

而不是

combo1=zip(merged_data[varlist[0]],merged_data[varlist[1]])

(注意方括号的位置)

字符串只是Python的序列,所以它可以为您解压它们

我倾向于认为zip(*args)与zip相反:

list1=[1,2,3,4,5]
list2=[10,11,12,13,14]

zippedlist=zip(list1,list2)
print zippedlist

>>>>[(1,10),(2,11),(3,12),(4,13),(5,14)]

print zip(*zippedlist)

>>>>[(1,2,3,4,5),(10,11,12,13,14)]

编辑:

因此,可以实现combo2函数的开放式版本:

combo2=zip([merged_data[v] for v in varlist])

相关问题 更多 >