【问题标题】:Shift column position to right based on criteria using Pandas使用 Pandas 根据条件将列位置向右移动
【发布时间】:2021-07-11 11:39:02
【问题描述】:

我有一个如下所示的数据框

df = pd.DataFrame({'person_id': [101,101,101,101,202,202],
                   'person_type':['A','A','B','C','D','B'],
                   'course_id':[121,123,135,137,140,143],
                   'dep_id':[np.nan,Z12,np.nan,B12,np.nan,D12})

如果dep_id 列中有NA,我想将位置向右移动1 个单元格。

我尝试了以下方法,但没有成功

l =  list(np.arange(0,len(df.columns) -1))
np.where(df['dep_id'].isna(), l.insert(0,-1))
df.iloc[:,l]

在大数据上移动列位置的任何有效而优雅的方法?

例如,我希望我的输出如下所示

【问题讨论】:

    标签: python python-3.x pandas dataframe pandas-groupby


    【解决方案1】:

    让我们试试shiftaxis=1

    m = df['dep_id'].isna()
    df.loc[m, :] = df[m].shift(axis=1)
    

       person_id person_type course_id dep_id
    0        NaN         101         A    121
    1      101.0           A       123    Z12
    2        NaN         101         B    135
    3      101.0           C       137    B12
    4        NaN         202         D    140
    5      202.0           B       143    D12
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2021-07-19
      相关资源
      最近更新 更多