2024-09-28 20:50:34 发布
网友
我有两个dataframes,都被timeseries索引。我需要将这些元素添加到一起以形成一个新的dataframe,但前提是索引和列相同。如果某个dataframe中不存在该项,则应将其视为零。
dataframes
timeseries
dataframe
我试过使用.add,但不管索引和列是什么,这都是总和。也尝试了一个简单的combined_data = dataframe1 + dataframe2,但是如果两个数据帧都没有元素,则给出一个NaN。
.add
combined_data = dataframe1 + dataframe2
NaN
有什么建议吗?
如果我没听错的话,你想要的是:
(x.reindex_like(y).fillna(0) + y.fillna(0).fillna(0))
这将给出两个数据帧的总和。如果一个值在一个数据框中,而不是在另一个数据框中,则该位置的结果将是现有的值(查看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
上面的答案-fillna(0)和一个直接加法都会给出Nan值,如果它们中的任何一个有不同的结构。
fillna(0)
最好使用填充值
df.add(other_df, fill_value=0)
那x.add(y, fill_value=0)怎么样?
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
如果我没听错的话,你想要的是:
这将给出两个数据帧的总和。如果一个值在一个数据框中,而不是在另一个数据框中,则该位置的结果将是现有的值(查看X中的B0和Y中的B0并查看最终输出)。如果两个数据帧中都缺少一个值,则该位置的结果将为零(查看X中的B1和Y中的B1并查看最终输出)。
上面的答案-
fillna(0)
和一个直接加法都会给出Nan值,如果它们中的任何一个有不同的结构。最好使用填充值
df.add(other_df, fill_value=0)
那
x.add(y, fill_value=0)
怎么样?相关问题 更多 >
编程相关推荐