【问题标题】:How to drop the last row of an exploded dataframe如何删除爆炸数据框的最后一行
【发布时间】:2022-11-04 22:28:30
【问题描述】:

我有一个很大的数据框,但为了简单起见,它看起来像下面这个

             A  B  C
0    [a, b, c]  1 22
1       [d, e]  2 45
2       [f, g]  3 32
3       [h, i]  4 64
4 [j, k, l, m]  5 76

现在我用过:

df.explode('A')

要像这样爆炸数据框:

    A  B  C
0   a  1 22
0   b  1 22
0   c  1 22
1   d  2 45
1   e  2 45
2   f  3 32
2   g  3 32
3   h  4 64
3   i  4 64
4   j  5 76
4   k  5 76
4   l  5 76
4   m  5 76

现在我想从爆炸的“A”列中删除最后一行。这意味着代码将删除元素:c、e、g、i、m。 输出应如下所示:

    A  B  C
0   a  1 22
0   b  1 22
1   d  2 45
2   f  3 32
3   h  4 64
4   j  5 76
4   k  5 76
4   l  5 76

知道我该怎么做吗? (注意:这是一个非常大的数据框,所以我不能手动选择行)

【问题讨论】:

    标签: pandas dataframe drop pandas-explode


    【解决方案1】:

    boolean indexingIndex.duplicated 一起使用:

    df1 = df.explode('A')
    df1 = df1[df1.index.duplicated(keep='last')]
    print (df1)
        A  B  C
    0   a  1 22
    0   b  1 22
    1   d  2 45
    2   f  3 32
    3   h  4 64
    4   j  5 76
    4   k  5 76
    4   l  5 76
    

    或者首先通过索引删除列表的最后一个值:

    df1 = df.assign(A = df.A.str[:-1]).explode('A')
    print (df1)
       A  B   C
    0  a  1  22
    0  b  1  22
    1  d  2  45
    2  f  3  32
    3  h  4  64
    4  j  5  76
    4  k  5  76
    4  l  5  76
    

    【讨论】:

    • 谢谢这个作品!
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2013-12-15
    • 1970-01-01
    相关资源
    最近更新 更多