我已經搜索了這個問題的答案,但我甚至不知道如何用近似結果來描述它。熊貓根據另一個數據幀返回一個數據幀的列數
現狀:
我想帶來的價值列DF並將它們合併到DF2,但我需要上取決於它多列合併返回一個值與否。現在的過程是根據是否返回值來查看是否按照HIGH,MID,LOW列的順序連接返回值。如果某些HIGH值沒有返回結果,那麼只能加入MID列,那麼如果仍然沒有匹配,則您將使用LOW列執行相同的過程。我正在研究groupby方法,但不知道這是否是實現我的目標的最佳方式。
這是一個基本的例子:
df = pd.DataFrame({ 'LOW' : ['Abc', 'Bcd', 'CdE'], 'MID' : ['aBc', 'bCd', 'cDe'], 'HIGH': ['abC', 'bcD', 'cdE'], 'VALUE1': ['1','2','3'], 'VALUE2': ['bb','dd','ee']})
df
+----+-------+------+------+---------+--------+
| | HIGH | LOW | MID | VALUE1 | VALUE2 |
+----+-------+------+------+---------+--------+
| 0 | abC | Abc | aBc | 1 | bb |
| 1 | bcD | Bcd | bCd | 2 | dd |
| 2 | cdE | CdE | cDe | 3 | ee |
+----+-------+------+------+---------+--------+
df2 = pd.DataFrame({ 'LOW' : ['Abc-4', 'Bcd-1', 'CdE'], 'MID' : ['aBc*2', 'bCd', 'cDe&3'], 'HIGH': ['abC', 'bcD$22', 'cdE#2']})
df2
+----+---------+--------+-------+
| | HIGH | LOW | MID |
+----+---------+--------+-------+
| 0 | abC | Abc-4 | aBc*2 |
| 1 | bcD$22 | Bcd-1 | bCd |
| 2 | cdE#2 | CdE | cDe&3 |
+----+---------+--------+-------+
df_result
+----+---------+--------+--------+--------+--------+
| | HIGH | LOW | MID | VALUE | VALUE2 |
+----+---------+--------+--------+--------+--------+
| 0 | abC | Abc-4 | aBc*2 | 1 | bb |
| 1 | bcD$22 | Bcd-1 | bCd | 2 | dd |
| 2 | cdE#2 | CdE | cDe&3 | 3 | ee |
+----+---------+--------+--------+--------+--------+
謝謝!
我認爲唯一的辦法就是在這裏先合併上'HIGH',檢查'nan',如果'nan's存在然後合併下一個等等。 – muon
我結束了這個建議。下面的答案完全適用於我的簡單示例,但它不適合我的實際使用情況。 –