我有一个巨大的数据框,其中包含多种类型的列-字符串,布尔值,整数,浮点数(这很重要,因为这意味着我不能使用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,具有数十万行和一列不同类型的列;我想保留大部分(如果不是全部)熊猫df元数据。我可以用一系列的
for
和if
屠宰它,但是我觉得应该更容易些,也许只有几行。也许用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 - Python Pandas-拆分存储列表而不是单个值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53073795/