簡體   English   中英

嘗試合並兩個不同數據框的兩列時出現問題?

[英]Problem while trying to merge two columns of two different dataframes?

在使用 Pandas 處理和操作數據幀方面,我目前面臨一個似乎無法解決的問題。

為了讓您了解我正在談論的數據框,您將在我的代碼中看到:

在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述

我正在嘗試將數據集“數據”的“鍛煉”列中的單詞更改為數據集“練習”的“名稱”列中的單詞。

例如,“數據”數據集的練習列中的首字母縮寫詞“Dl”應更改為“練習”數據集的“名稱”列中的“Dead lifts”。

我嘗試了很多方法,但似乎都失敗了。 我每次都收到相同的錯誤。

這是我嘗試過的方法的代碼:

### Method 1 ###

# Rename Name Column in 'exercise'
exercise = exercise.rename(columns={'label': 'exercise'})

# Merge Exercise Columns in 'exercise' and in 'data'
data = pd.merge(data, exercise, how = 'left', on='exercise')

### Method 2 ###
data.merge(exercise, left_on='exercise', right_on='label')

### Method 3 ###

data['exercise'] = data['exercise'].astype('category')
EXERCISELIST = exercise['name'].copy().to_list()
data['exercise'].cat.rename_categories(new_categories = EXERCISELIST, inplace = True)
                
### Same Error, New dataset ###

# Rename Name Column in 'area'
area = area.rename(columns={'description': 'area'})

# Merge Exercise Columns in 'exercise' and in 'data'
data = pd.merge(data, area, how = 'left', on = 'area')

這是我得到的錯誤:

回溯(最近一次通話最后):

文件“---”,第 232 行,在
data.to_frame().merge(練習, left_on='練習', right_on='label')

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/frame.py”,第 8192 行,合並
返回合並(

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/reshape/merge.py”,第 74 行,合並
op = _MergeOperation(

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/reshape/merge.py”,第 668 行,在init
) = self._get_merge_keys()

_get_merge_keys 中的文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/reshape/merge.py”,第 1046 行
left_keys.append(left._get_label_or_level_values(lk))

_get_label_or_level_values 中的文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/generic.py”,第 1683 行
引發 KeyError(鍵)

鍵錯誤:'鍛煉'

有人能幫我解決這個問題嗎? 非常感謝您提前。

  1. 合並,然后在數據區域之間刪除和重命名列
  2. 合並,然后在步驟 1 和練習之間刪除和重命名列
area = pd.DataFrame({"arealabel":["AGI","BAL"],
                    "description":["Agility","Balance"]})
exercise = pd.DataFrame({"description":["Jump rope","Dead lifts"],
                        "label":["Jr","Dl"]})
data = pd.DataFrame({"exercise":["Dl","Dl"],
                    "area":["AGI","BAL"],
                    "level":[0,3]})

(data.merge(area, left_on="area", right_on="arealabel")
 .drop(columns=["arealabel","area"])
 .rename(columns={"description":"area"})
 .merge(exercise, left_on="exercise", right_on="label")
 .drop(columns=["exercise","label"])
 .rename(columns={"description":"exercise"})
)
等級 區域 鍛煉
0 0 敏捷 硬拉
1 3 平衡 硬拉

暫無
暫無

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

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