亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對前 n 個數據框列重新排序,并在末尾添加剩余的列?

如何對前 n 個數據框列重新排序,并在末尾添加剩余的列?

撒科打諢 2023-12-08 14:54:12
不可預測的格式df:  First Name  number last_name0    Cthulhu     666     Smith    df = pd.DataFrame({'First Name': ['Cthulhu'], 'number': [666], 'last_name': ['Smith']})這需要放入列名稱和順序中:TemplateColumns = ['First Name', 'other', 'number']。如果列不存在,可以創建它們:for col in TemplateColumns:    if col not in df:        df[col] = np.nan這使:  First Name  number last_name  other0    Cthulhu     666     Smith    NaN初始列需要與 一樣排序TemplateColumns,將剩余列留在最后,以獲得desired_df:  First Name  other   number last_name0    Cthulhu    NaN      666     Smithdesired_df = pd.DataFrame({'First Name': ['Cthulhu'], 'other': [np.nan], 'number': [666], 'last_name': ['Smith']})重新排序列在其他帖子中得到了很好的解釋,但我不知道如何對前 n 列進行排序并將其余的保留在最后。我怎樣才能做到這一點?
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

嘗試這個


cols = TemplateColumns + df.columns.difference(TemplateColumns, sort=False).tolist()

df_final =  df.reindex(cols, axis=1)


Out[714]:

  First Name  other  number last_name

0    Cthulhu    NaN     666     Smith


查看完整回答
反對 回復 2023-12-08
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

您可以編寫自己的函數來實現此目的。本質上,您可以用來.reindex()對數據框重新排序,同時包含空列(如果它們不存在)。唯一需要弄清楚的剩余部分是如何將剩余的列添加到TemplateColumns數據框中。您可以通過獲取列索引的設置差異來完成此操作,然后TemplateColumns在調用之前更新訂單.reindex


設置數據和功能


def reordered(df, new_order, include_remaining=True):

    cols_to_end = []

    if include_remaining:

        # gets the items in `df.columns` that are NOT in `new_order` 

        cols_to_end = df.columns.difference(new_order, sort=False)

    

    # Ensures that the new_order items are first

    final_order = new_order + list(cols_to_end)

    return df.reindex(columns=final_order)


df = pd.DataFrame({'First Name': ['Cthulhu'], 'number': [666], 'last_name': ['Smith']})

new_order = ['First Name', 'other', 'number']

和include_remaining:


out = reordered(df, new_order, include_remaining=True)


print(out)

  First Name  other  number last_name

0    Cthulhu    NaN     666     Smith

沒有include_remaining:


out = reordered(df, new_order, include_remaining=False)


print(out)

  First Name  other  number

0    Cthulhu    NaN     666


查看完整回答
反對 回復 2023-12-08
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

insert像這樣使用:


for col in TemplateColumns:

    if col not in df:

        df.insert(1, col, np.nan)


查看完整回答
反對 回復 2023-12-08
  • 3 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號