gpt4 book ai didi

python - Pandas 拆分列并创建元组列

转载 作者:行者123 更新时间:2023-12-03 19:10:59 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

# df

colA colB colC

rqp 129 a
pot 217;345 u
ghay 716 b
rbba 217;345 d
tary 612;811;760 a
kals 716 t

ColB(显示的两个组件中的任何组件)和 ColC 组合构成了独特的组合。
我想从此数据帧创建一个数据帧,如下所示
# newdf:

colAA coLBB

(129,a) (a,rqp)
(217,u) (u,pot)
(345,u) (u,pot)
(716,b) (b,ghay)
(217,d) (d,rbba)
(345,d) (d,rbba)
(612,a) (a,tary)
(811,a) (a,tary)
(760,a) (a,tary)
(716,t) (t,kals)

如果 colB 中有单个元素,我曾尝试创建新列,但无法了解如何使用分号拆分器以及如何创建元组列。

如果我在 ColB 中没有任何分号,那么我可以使用
df['AA'] = list(zip(df[colB], df[colC]))
df['AB'] = list(zip(df[colC], df[colA]))

但是,ColB 中分号的存在我遇到了问题,例如如何将该字符串拆分为多个字符串并分配元组。
任何帮助将不胜感激。

最佳答案

使用, Series.str.split 拆分列的字符串 colB围绕分隔符 ;然后使用 DataFrame.explode 变换列的每个元素 colB到一行,复制索引值。然后使用 DataFrame.agg 将所需的列聚合为 tuple沿axis=1 :

df['colB'] = df['colB'].str.split(';')
df = df.explode('colB')
df['ColAA'] = df[['colB', 'colC']].agg(tuple, axis=1)
df['ColBB'] = df[['colC', 'colA']].agg(tuple, axis=1)
df = df[['ColAA', 'ColBB']].reset_index(drop=True)

结果:
# print(df)
ColAA ColBB
0 (129, a) (a, rqp)
1 (217, u) (u, pot)
2 (345, u) (u, pot)
3 (716, b) (b, ghay)
4 (217, d) (d, rbba)
5 (345, d) (d, rbba)
6 (612, a) (a, tary)
7 (811, a) (a, tary)
8 (760, a) (a, tary)
9 (716, t) (t, kals)

关于python - Pandas 拆分列并创建元组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62165220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com