[英]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
自動提取old
和new
的嗎? 如果是這樣,你可以這樣做:
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.