我有一个 df:
a b c
0 'd' 1 ['f', 'h']
1 'f' 2 ['u', 'v']
2 'g' 3 ['i', 'o']
我想将 df['a'] 附加到 df['c'] 列的每个元素。 预期输出:
a b c d
0 'd' 1 ['f', 'h'] ['fd', 'hd']
1 'f' 2 ['u', 'v'] ['uf', 'vf']
2 'g' 3 ['i', 'o'] ['ig', 'og']
我尝试了 for 循环,并尝试了列表理解,但它很垃圾。 为了避免 for 循环,我尝试了这种矢量化方法。但是没有用。
df['d']=df['c'].cat(df['a'],axis=0).values.tolist()
一如既往,任何帮助,非常感谢。
答案 0 :(得分:2)
我们可以使用 explode
取消您的列表,然后将字符串相加,最后在索引上使用 groupby
并使用 agg(list)
恢复您的列表:
ex = df.explode('c')
ex['c'] = ex['c'] + ex['a']
df['c'] = ex.groupby(ex.index)['c'].agg(list)
a b c
0 d 1 [fd, hd]
1 f 2 [uf, vf]
2 g 3 [ig, og]