首页 > 解决方案 > 不同数据框列中的 zip 列表元素

问题描述

a=[['1','2'],['3','4']]
b=[['5','6'],['7','8']]
df14=pd.DataFrame({'key':a,'hi':b})

我想添加一个带有元组的第三列,其中“key”中的每个列表元素都与其在“hi”中的列表索引匹配-> 例如,它看起来像这样。

       key    hi      tup
0   [1, 2]  [5, 6]  [(1,5),(2,6)]
1   [3, 4]  [7, 8]  [(3,7),(4,8)]

我知道我必须使用该zip功能,但我无法正确使用您的语法。我认为应该是这样的

for index,row in df14.iterrows():
   df14['tup']=df14.key.apply(lambda x: zip(x,df14.hi))

但这在某种程度上是错误的

标签: pythonpandaslistziptuples

解决方案


这里iterrows不是必须的,第二行是为每行应用 lambda 函数而修改的,并为每行列的返回值axis=1而改变:d14.hix.hihi

df14['tup'] = df14.apply(lambda x: list(zip(x.key,x.hi)), axis=1)
print (df14)
      key      hi               tup
0  [1, 2]  [5, 6]  [(1, 5), (2, 6)]
1  [3, 4]  [7, 8]  [(3, 7), (4, 8)]

推荐阅读