我有两个dataframes,都是索引的timeseries.我需要将元素添加到一起以形成新元素dataframe,但前提是索引和列是相同的.如果该项目不存在于其中一个中dataframe,则应将其视为零.
我尝试过使用.add但不管索引和列是什么.也尝试了一个简单combined_data = dataframe1 + dataframe2但这给了一个NaN如果两个数据帧都没有该元素.
有什么建议?
Wes*_*ney 67
怎么样x.add(y, fill_value=0)?
import pandas as pd
df1 = pd.DataFrame([(1,2),(3,4),(5,6)], columns=['a','b'])
Out:
a b
0 1 2
1 3 4
2 5 6
df2 = pd.DataFrame([(100,200),(300,400),(500,600)], columns=['a','b'])
Out:
a b
0 100 200
1 300 400
2 500 600
df_add = df1.add(df2, fill_value=0)
Out:
a b
0 101 202
1 303 404
2 505 606
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,你需要这样的东西:
(x.reindex_like(y).fillna(0) + y.fillna(0).fillna(0))
Run Code Online (Sandbox Code Playgroud)
这将给出两个数据帧的总和.如果一个值在一个数据帧而不是另一个数据帧中,则该位置的结果将是该现有值(在X中查看B0,在Y中查看B0并查看最终输出).如果两个数据帧中都缺少一个值,那么该位置的结果将为零(在X中查看B1,在Y中查看B1并查看最终输出).
>>> x
A B C
0 1 2 NaN
1 3 NaN 4
>>> y
A B C
0 8 NaN 88
1 2 NaN 5
2 10 11 12
>>> (x.reindex_like(y).fillna(0) + y.fillna(0).fillna(0))
A B C
0 9 2 88
1 5 0 9
2 10 11 12
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51284 次 |
| 最近记录: |