簡體   English   中英

在 dataframe 上匹配和重命名列

[英]Matching and renaming columns on a dataframe

我有兩個數據框:

df1:

  ID Drive Volume Rep
  1   2     3      4

df2:

 ID 2Volume Drive_1 Reps
  1   2       3      4

我使用下表匹配列名

    df1    df2
   Drive   Drive_1
   Volume  2Volume
   Reps    Reps   

使用表中的 map,如何將 df2 中的所有列重命名為與 df1 相同

我可以使用簡單的 df2 = df2.rename(columns={old:new}) 手動執行此操作。 但是我想要可以使用不同列名的通用代碼。

當您說您不想df2 = df2.rename(columns={old:new})手動執行時,您的意思是您想從table自動提取oldnew的嗎? 如果是這樣,你可以這樣做:

df2 = df2.rename(columns=dict(zip(table.df2, table.df1)))

#    ID  Drive  Volume  Reps
# 0   1      2       3     4

要么:

df2 = df2.rename(columns=table.set_index('df2').df1)

也許這會有所幫助。

df2.columns = df1.columns

如果你想動態創建類似列的映射字典,你可以使用difflib

import difflib
col1 = ['ID', 'Drive','Volume','Rep'] # df1.columns.values
col2 = [ 'ID', '2Volume', 'Drive_1', 'Reps']  # df2.columns.values
col_dict = {difflib.get_close_matches(col, col2)[0]:col for col in col1}

之后,運行上面的代碼你會得到這樣的字典 -

{'ID': 'ID', 'Drive_1': 'Drive', '2Volume': 'Volume', 'Reps': 'Rep'}

上面的字典可以用於 map 列

我有兩個數據框:

df1:

  ID Drive Volume Rep
  1   2     3      4

df2:

 ID 2Volume Drive_1 Reps
  1   2       3      4

我使用下表匹配列名

    df1    df2
   Drive   Drive_1
   Volume  2Volume
   Reps    Reps   

使用表中的 map,如何將 df2 中的所有列重命名為與 df1 相同

我可以使用簡單的 df2 = df2.rename(columns={old:new}) 手動執行此操作。 但我想要可以使用不同列名的通用代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM