我有一个巨大的数据框,其中包含多种类型的列-字符串,布尔值,整数,浮点数(这很重要,因为这意味着我不能使用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元数据。我可以用一系列的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 - Python Pandas-拆分存储列表而不是单个值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53073795/

10-12 16:46
查看更多