【问题标题】:Move object in pandas DataFrame from one "cell" to another将 pandas DataFrame 中的对象从一个“单元格”移动到另一个“单元格”
【发布时间】:2018-03-26 14:06:40
【问题描述】:

我需要将 pandas DataFrame 中的一个对象从一个位置移动到另一个位置,并将该对象的原始位置留空而不影响其他列。

employees = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
levels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

df = pd.DataFrame({"Employees":employees, "Level":levels})

#move employee 1 from index 3 to index 1 without altering Level column
#leave index 3 blank after moving employee 1

视觉上,我需要从starting point 转到end point

谢谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这是我的解决方案。您可以只使用.loc 函数,它将索引作为第一个参数,列名作为第二个参数。

    阅读更多here

    import pandas as pd
    import numpy as np
    
    employees = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
    levels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    df = pd.DataFrame({"Employees":employees, "Level":levels})
    
    #substitution logic
    temp = df['Employees'][3]
    df.loc[3, 'Employees'] = ''
    df.loc[1, 'Employees'] = temp
    #print output
    print df
    

    输出:

     Employees  Level
    0         0      1
    1         1      2
    2         0      3
    3                4
    4         0      5
    5         0      6
    6         0      7
    7         0      8
    8         0      9
    9         0     10
    

    【讨论】:

      【解决方案2】:

      用途:

      df = pd.DataFrame({"Employees":['','','','empployee_object','','','','','',''], 
                         "Level":range(1,11)}, index=range(1,11))
      print (df)
                 Employees  Level
      1                         1
      2                         2
      3                         3
      4   empployee_object      4
      5                         5
      6                         6
      7                         7
      8                         8
      9                         9
      10                       10
      
      #move value from 4 index to 2 index in Employees column
      df.loc[2, 'Employees'] = df.loc[4, 'Employees']
      #set empty string to original
      df.loc[4, 'Employees'] = ''
      print (df)
                 Employees  Level
      1                         1
      2   empployee_object      2
      3                         3
      4                         4
      5                         5
      6                         6
      7                         7
      8                         8
      9                         9
      10                       10
      

      【讨论】:

        猜你喜欢
        • 2018-04-22
        • 2018-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        相关资源
        最近更新 更多