不同数据框列中的 zip 列表元素

Posted

技术标签:

【中文标题】不同数据框列中的 zip 列表元素【英文标题】:zip list elements in different dataframe columns 【发布时间】:2019-11-04 23:09:45 【问题描述】:
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))

但这是错误的

【问题讨论】:

【参考方案1】:

这里iterrows 不是必需的,第二行由axis=1 修改为每行应用lambda 函数,并将d14.hi 更改为x.hi 用于hi 列的每行返回值:

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)]

【讨论】:

以上是关于不同数据框列中的 zip 列表元素的主要内容,如果未能解决你的问题,请参考以下文章

从列表列表中提取元素并将其分配为熊猫数据框列中的值

根据其他列值从数据框列中的列表中删除最后一个元素

数据框列中的嵌套列表,提取数据框列中列表的值 Pyspark Spark

按条件从列表的数据框列中计算和删除元素

如何迭代熊猫数据框列中的元素?

如何迭代数据框列中的列表项