我有下面給出的兩個資料框。我想根據特定的日期值用 df2 的行減去 df1 的行。在這里,在示例中,我給出了基于日期 2020-02-20 的輸出。df1 中特定日期(即 2020-02-20)之后的行從 df2 中減去特定日期(即 2020-02-20)之后的行。
df1:
| id || date | | 00:00:00 | | 00:15:00 | | 00:30:00 |.......| 00:23:45 |
| ---- || -------- | | -------- | | -------- | | -------- |.......| -------- |
| ID1 || 2020-01-01 | | 0.15 | | 0.19 | | 0.18 |.......| 0.12 |
| ID1 || 2020-01-02 | | 0.12 | | 0.12 | | 0.13 |.......| 0.09 |
| ID1 || 2020-01-03 | | 0.11 | | 0.10 | | 0.11 |.......| 0.10 |
| . || . | | . | | . | | . |.......| . |
| . || . | | . | | . | | . |.......| . |
| ID1 || 2020-02-20 | | 0.12 | | 0.10 | | 0.15 |.......| 0.13 |
| . || . | | . | | . | | . |.......| . |
| . || . | | . | | . | | . |.......| . |
| ID1 || 2020-12-31 | | 0.14 | | 0.16 | | 0.18 |.......| 0.15 |
df2:
| date | | 00:00:00 | | 00:15:00 | | 00:30:00 |.......| 00:23:45 |
| -------- | | -------- | | -------- | | -------- |.......| -------- |
| 2020-01-01 | | 0 | | 0 | | 0.08 |.......| 0.06 |
| 2020-01-02 | | 0 | | 0 | | 0.09 |.......| 0.02 |
| 2020-01-03 | | 0 | | 0 | | 0.05 |.......| 0.08 |
| . | | . | | . | | . |.......| . |
| . | | . | | . | | . |.......| . |
| 2020-02-20 | | 0 | | 0 | | 0.10 |.......| 0.06 |
| . | | . | | . | | . |.......| . |
| . | | . | | . | | . |.......| . |
| 2020-12-31 | | 0 | | 0.04 | | 0.08 |.......| 0.07 |
輸出資料幀 (df_out) 應該是:
| id || date | | 00:00:00 | | 00:15:00 | | 00:30:00 |.......| 00:23:45 |
| ---- || -------- | | -------- | | -------- | | -------- |.......| -------- |
| ID1 || 2020-01-01 | | 0.15 | | 0.19 | | 0.18 |.......| 0.12 |
| ID1 || 2020-01-02 | | 0.12 | | 0.12 | | 0.13 |.......| 0.09 |
| ID1 || 2020-01-03 | | 0.11 | | 0.10 | | 0.11 |.......| 0.10 |
| . || . | | . | | . | | . |.......| . |
| . || . | | . | | . | | . |.......| . |
| ID1 || 2020-02-20 | | 0.12 | | 0.10 | | 0.05 |.......| 0.07 |
| . || . | | . | | . | | . |.......| . |
| . || . | | . | | . | | . |.......| . |
| ID1 || 2020-12-31 | | 0.14 | | 0.12 | | 0.10 |.......| 0.08 |
uj5u.com熱心網友回復:
如果資料幀的索引相等,您可以簡單地減去它們:
output = df - df2
要設定索引,請使用set_index:
df.set_index('date', inplace=True)
僅從另一個資料幀中減去一個資料幀的一部分,對資料幀進行切片:
df.loc[df.index > '2020-02-20']
完整的解決方案是這樣的:
df.set_index('date', inplace=True)
df2.set_index('date', inplace=True)
df.loc[df.index >= "2020-02-20", df.columns != 'id'] = df.loc[df.index >= "2020-02-20", df.columns != 'id'] - df2.loc[df2.index >= "2020-02-20"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403848.html
標籤:
上一篇:兩個資料框中的條件替換
