gpt4 book ai didi

Python - 根据表列中的逗号分隔值写入新行

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

我有一个示例数据集:

column1 column2 column3     column4                       column5 
a b c paddy, jimmy, john [242352, 2351235, 65436324]
a z c james, jill, jillian [325134, 63464374568, 43574578654]
s t y patsy [463465573452]

我想用逗号分隔“column4”和“column5”。这样第 4 列和第 5 列只有一个值。该行的其余部分将被重复。

生成的数据帧示例:

column1 column2 column3  column4     column5 
a b c paddy 242352
a b c jimmy 2351235
a b c john 65436324
.......

任何解决方案都值得赞赏。我看过以前关于堆栈溢出的类似问题,但因为我有浮点值,所以给出的解决方案对我不起作用。

最佳答案

使用 pd.reindexpd.index.repeat 重复行。

然后使用 str.extractall 仅从 col5str.split 中提取数字,stack 扩展 col4col5

# Reindex and repeat cols on len of split and reset index
df1 = df.reindex(df.index.repeat(df['column4'].fillna("").str.split(',').apply(len)))
df1 = df1.drop(['column4','column5'],1)

# Splitting both cols
s = df['column4'].str.split(',', expand=True).stack().reset_index(level=1,drop=True)
s1 = df['column5'].str.extractall('(\d+)').reset_index(level=1,drop=True)[0]

# Now grouping the series and df using cumcount.
df1 = df1.set_index(df1.groupby(df1.index).cumcount(), append=True)
s = s.to_frame('column4').set_index(s.groupby(s.index).cumcount(), append=True)
s1 = s1.to_frame('column5').set_index(s1.groupby(s1.index).cumcount(), append=True)

# Joining the all of them together and reset index.
df1 = df1.join(s, how='outer').join(s1,how='outer').reset_index(level=[0,1],drop=True)

print (df1)

输出:

column1 column2 column3  column4    column5
0 a b c paddy 242352
1 a b c jimmy 2351235
2 a b c john 65436324
3 a z c james 325134
4 a z c jill 63464374568
5 a z c jillian 43574578654
6 s t y patsy 463465573452

关于Python - 根据表列中的逗号分隔值写入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804653/

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