gpt4 book ai didi

Python pandas - 分割存储列表而不是单个值的行

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:37 25 4
gpt4 key购买 nike

我有一个巨大的数据框,其中包含多种类型的列 - 字符串、 bool 值、整数、 float (这很重要,因为这意味着我不能使用 np.repeat 来解决这个问题。这就是为什么我问自己是因为我相信这里类似的解决方案对我不起作用。要么那样,要么我不知道如何!)。嗯,我的一列是 ID 号,由于某种原因,某些行在 ID 下列出了多个数字。像这样的事情:

i  ID            Name        Boolean1  Boolean2   etc
0 2755 Blahblah1 True False ...
1 2894, 4755 PainInMy2 True True ...
2 331 Blehblue False False ...

我想以一种方式分割这个痛苦的行,每个 ID 号都在一个单独的行上,所有其他值都在它下面重复。即

i  ID      Name        Boolean1  Boolean2   etc
0 2755 Blahblah1 True False ...
1 2894 PainInMy2 True True ...
2 4755 PainInMy2 True True ...
3 331 Blehblue False False ...

实现这一目标的优雅方式是什么?请记住,这是一个巨大的 Pandas df,具有数十万行和十几列不同类型;我想保留大部分(如果不是全部)pandas df 元数据。我可以用一系列的 forif 来破坏它,但我觉得应该有更简单的方法,可能只需几行即可做到这一点。也许使用 split(',') 或类似的东西。但我不知道怎么做。谢谢!

(请不要将此标记为重复。我找不到任何对我有用的答案!)

最佳答案

您可以使用 pandas str 方法在给定分隔符上拆分单元格并堆叠以扩展为多行。将其余列设置为索引,以确保数据对应于正确的值。

df.set_index(['Name', 'Boolean1', 'Boolean2']).ID.str.split(',', expand=True)\
.stack().reset_index(3,drop = True).reset_index()\
.rename(columns = {0 : 'ID'})

你得到了

    Name       Boolean1 Boolean2  ID
0 Blahblah1 True False 2755
1 PainInMy2 True True 2894
2 PainInMy2 True True 4755
3 Blehblue False False 331

关于Python pandas - 分割存储列表而不是单个值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073795/

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