添加两个pandas数据帧

2024-09-28 20:50:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个dataframes,都被timeseries索引。我需要将这些元素添加到一起以形成一个新的dataframe,但前提是索引和列相同。如果某个dataframe中不存在该项,则应将其视为零。

我试过使用.add,但不管索引和列是什么,这都是总和。也尝试了一个简单的combined_data = dataframe1 + dataframe2,但是如果两个数据帧都没有元素,则给出一个NaN

有什么建议吗?


Tags: 数据add元素dataframedatanan建议dataframes
3条回答

如果我没听错的话,你想要的是:

(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值,如果它们中的任何一个有不同的结构。

最好使用填充值

df.add(other_df, 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

相关问题 更多 >