![](/img/trans.png)
[英]Rename the name of the columns of a Pandas Dataframe by the values of another Pandas Dataframe
[英]Pandas rename column of dataframe to value of another dataframe if values of two dataframe columns match
我有兩個數據框。
dfA 包含兩列“CCLE_ID”和“名稱”以及其他不重要的列
dfB 包含兩列“CCLE ID”和“細胞系”以及其他不重要的列。
現在,dfB['CCLE ID'] 值設置為 0。
我想要做的是比較dfA['Name']
列和dfB['Cell line']
列中的所有值。 它們都是字符串,代表細胞系的簡寫。 如果dfA['Name']
和dfB['Cell line']
列的值匹配,那么我想用 dfA['CCLE_ID'] 列中的字符串替換dfA['CCLE_ID']
dfB['CCLE ID']
列的值 0匹配的單元格名稱。
老實說,我對如何做到這一點感到迷茫(熊貓初學者)。
首先,我們假設 dfA 和 dfB 具有相同的行數,因為如果它們不具有相同的行數,那么它會更復雜,您有兩種選擇:要么重塑數據幀以具有相同的行數,要么使用其他 Python 庫來執行轉換.
基於數據幀具有相同行數的初始假設,我將嘗試逐步為您分解。
使用兩個數據dfA
和dfB
,首先合並數據。 您可以稍后從 dfB 中刪除額外的列。
為簡單起見,要將 dfA 列合並到 dfB 中,請添加兩列 dfaName 和 dfa_CCLE_ID。
dfB['dfaName'] = dfa['Name']
dfB['dfa_CCLE_ID'] = dfa['CCLE_ID']
然后使用pandas.dataFrame.apply()有條件地轉換您的數據。
dfB['CCLE_ID'] = dfB[['dfaName','Cell line', 'dfa_CCLE_ID']].apply(lambda x: x['dfa_CCLE_ID'] if x['dfaName']==x['Cell line'] else x, axis=1)
一個不錯的附加功能是使用dataframe 掩碼生成並查看比較。 這是查看和測試數據轉換的好步驟。 在此示例中,在 dfB 中創建一個額外的列,其中包含用於比較的真/假值。
dfB['column_matcher'] = dfb['dfaName']==dfB['Cell line']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.