gpt4 book ai didi

regex - 根据同一行中另一列的值拆分一个Pandas列?

转载 作者:行者123 更新时间:2023-12-01 08:16:44 26 4
gpt4 key购买 nike

我有一些DataFrame:

df = pd.DataFrame({'columnA': ['apple', 'banana', 'peach', 'pear'], 'columnB': ['XAXappleYBY', 'ZZZbananaRDESWA', 'HDJFpeachIUYTA', 'POIUYpearMNBV']})

columnA columnB
0 apple XAXappleYBY
1 banana ZZZbananaRDESWA
2 peach HDJFpeachIUYTA
3 pear POIUYpearMNBV

我想在 columnB中的字符串上分割 columnA并展开,例如:
    columnA columnB left_split  right_split
0 apple XaXappleYBY XaX YBY
1 banana ZZZbananaRDESWa ZZZ RDESWa
2 peach HDJFpeachIUYTA HDJF IUYTA
3 pear POIUYpearMNBV POIUY MNBV

我该怎么做?

最佳答案

将字符串split与listcomp一起使用,并构造数据帧df1。最后,加入df

cols = ['columnA', 'columnB']
df1 = pd.DataFrame([x.split(pat) for pat, x in zip(*map(df.get, cols))],
columns=['left_split', 'right_split'])
df_final = df.join(df1)

Out[153]:
columnA columnB left_split right_split
0 apple XAXappleYBY XAX YBY
1 banana ZZZbananaRDESWA ZZZ RDESWA
2 peach HDJFpeachIUYTA HDJF IUYTA
3 pear POIUYpearMNBV POIUY MNBV
[x.split(pat) for pat, x in zip(*map(df.get, cols))]的说明:

在这种情况下, zip(*map(df.get, cols))只是 zip(df.columnA, df.columnB)的另一种编写方式。在具有许多列的数据框上很方便。使用 zip-map版本只是我的习惯:)
[x.split(pat) for pat, x in  zip(*map(df.get, cols))]

Out[198]: [['XAX', 'YBY'], ['ZZZ', 'RDESWA'], ['HDJF', 'IUYTA'], ['POIUY', 'MNB']]

[x.split(pat) for pat, x in zip(df.columnA, df.columnB)]

Out[199]: [['XAX', 'YBY'], ['ZZZ', 'RDESWA'], ['HDJF', 'IUYTA'], ['POIUY', 'MNBV']]

它压缩2列。在列表理解的每次迭代中,它对每列的对应值进行切片。也就是说,在每次迭代中,它会切片对应于 columnAcolumnB每行的元组。每个元组都被解压缩为 patx,其中 patcolumnA的值,而 xcolumnB的值。 x是您要拆分的字符串,因此调用 x.split(pat)将按 columnB的每个 pat拆分 columnA的每个字符串

关于regex - 根据同一行中另一列的值拆分一个Pandas列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59260009/

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