我有兩個要加在一起的 Pandas DataFrame,一個日期時間索引和一組公共列。
日期時間索引將有 95% 的公共值,但其中的某些行df2可能不在其中df1,反之亦然。
我想將兩個 DataFrames 加在一起,當其中一個 DataFrames 沒有索引時,另一個 DataFrames 只是將其視為0(或取一個具有值的,以更好者為準)。
結果不應洗掉任何索引,即類似于外部聯接,而不是內部聯接。
我已經嘗試過pd.add,但這似乎會丟棄NaN兩個 DataFrame 都沒有條目的結果。
pd.concat在沒有共同索引的地方作業,但在他們做的地方我得到重復而不是加在一起。我必須做第二個groupby求和步驟嗎?我認為有一種更簡單的方法可以做到這一點。
例如:
第 1 幀
| 月 | 纈氨酸 1 | 纈氨酸 2 |
|---|---|---|
| 2022-01-01 | 1 | 2 |
| 2022-02-01 | 3 | 4 |
| 2022-03-01 | 5 | 6 |
第 2 幀
| 月 | 纈氨酸 1 | 纈氨酸 2 |
|---|---|---|
| 2022-03-01 | 101 | 102 |
| 2022-04-01 | 103 | 104 |
| 2024-01-01 | 105 | 106 |
| 2025-01-01 | 107 | 108 |
期望的結果
| 月 | 纈氨酸 1 | 纈氨酸 2 |
|---|---|---|
| 2022-01-01 | 1 | 2 |
| 2022-02-01 | 3 | 4 |
| 2022-03-01 | 106 | 108 |
| 2022-04-01 | 103 | 104 |
| 2024-01-01 | 105 | 106 |
| 2025-01-01 | 107 | 108 |
uj5u.com熱心網友回復:
希望這對你有用:)
pd.concat([df1,df2]).groupby(["Month"]).sum().reset_index()
輸出
Month Val1 Val2
0 2022-01-01 1 2
1 2022-02-01 3 4
2 2022-03-01 106 108
3 2022-04-01 103 104
4 2024-01-01 105 106
5 2025-01-01 107 108
uj5u.com熱心網友回復:
假設“Month”是索引(如果不是set_index('Month')第一個),我們可以將reindex每個 DataFrame 與索引的并集一起使用,fillna并且add:
idx = df1.index.union(df2.index)
out = df1.reindex(idx).fillna(0).add(df2.reindex(idx).fillna(0)).astype(int)
輸出:
Val 1 Val 2
Month
2022-01-01 1 2
2022-02-01 3 4
2022-03-01 106 108
2022-04-01 103 104
2024-01-01 105 106
2025-01-01 107 108
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433554.html
上一篇:使用索引和資料框查找標準差
下一篇:創建組ID序列但省略特定行
