【问题标题】:python pandas move few columns to beginning without mentioning other columnspython pandas将几列移到开头而不提及其他列
【发布时间】:2018-03-16 17:38:13
【问题描述】:

我的问题类似于this question。在回答这个问题时,我看到了几种方法来做我想做的事情。但是答案很旧,我觉得可能有一种快速有效的方法来做我正在寻找的事情。

import pandas as pd

df =pd.DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]})
df['x']=df.a + df.b
df['y']=df.a - df.b
df
   a  b   x  y
0  1  2   3 -1
1  2  4   6 -2
2  3  6   9 -3
3  4  8  12 -4

现在我想将 x 和 y 列移到开头。我总是可以在下面做。

df = df[['x','y','a','b']]
df
    x  y  a  b
0   3 -1  1  2
1   6 -2  2  4
2   9 -3  3  6
3  12 -4  4  8

但我不想要那个解决方案。我想要一个有效的解决方案,将列 x 和 y 移到开头而不提及其他列的名称,因为我的数据框将发生变化,我可能不知道所有列的名称

【问题讨论】:

    标签: python-3.x pandas multiple-columns


    【解决方案1】:

    您可以使用insert

    df.insert(loc=0, column='x', value=df.a + df.b)
    df.insert(loc=1, column='y', value=df.a - df.b)
    df
    Out[325]: 
        x  y  a  b
    0   3 -1  1  2
    1   6 -2  2  4
    2   9 -3  3  6
    3  12 -4  4  8
    

    【讨论】:

    • 是否需要value=df.a + df.b 部分?我试过df.insert(loc=0, column='x',value='x'),但它失败了:(。我这样做是因为我正在读取一个csv并且我的列x具有静态值
    • 在您的示例中,x 由 df.a + df.b 计算,对吗? @Ni_Tempe
    • @Ni_Tempe 所以你在另一个数据框中有 x, y ?
    • 不,我有一个 csv 文件,我正在读取该文件以创建我的数据框
    • @Ni_Tempe 考虑使用一些示例数据更改您的问题,因为在您的原始帖子中,我们没有得到任何关于您在评论中提到的点的信息
    【解决方案2】:
    import pandas as pd
    
    df =pd.DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]})
    
    a = list(df.columns)
    
    df['x']=df.a + df.b
    
    df['y']=df.a - df.b
    
    b = list(df.columns)
    
    diff = list(set(b) - set(a))
    
    df[diff+a]
    df
    
     y   x  a  b
    -1   3  1  2
    -2   6  2  4
    -3   9  3  6
    -4  12  4  8
    

    【讨论】:

    • 它不起作用,因为我要移动的列可能位于数据框中的任何位置...它们可能位于中间或末尾...
    • 要在数据框的中间或末尾移动的列应该始终在开头? @Ni_Tempe
    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多