如何将两个DataFrame相加?

3
我有一个 DataFrame number 1:
价格 物品
0 1 笔
1 2 铅笔
2 6 苹果
我还有一个 DataFrame number 2:
价格 物品
0 5 笔
1 6 铅笔
2 10 杯子
我想将这两个 DataFrame 合并,得到以下 DataFrame:
DataFrame number 1 + DatFRame number 2
价格 物品
0 6 笔
1 8 铅笔
2 6 苹果
3 10 杯子
请问如何实现?
使用以下代码:
import pandas as pd

df = pd.DataFrame({'Things': ['pen', 'pencil'], 'Price': [1, 2]})


series = pd.Series([1,2], index=[0,1])

df["Price"] = series
df.loc[2] = [6, "apple"]
print("DataFrame number 1")
print(df)

df2 = pd.DataFrame({'Things': ['pen', 'pencil'], 'Price': [1, 2]})
series = pd.Series([5,6], index=[0,1])

df2["Price"] = series

df2.loc[2] = [10, "cup"]

print("DataFrame number 2")
print(df2)
3个回答

3
您可以使用concatenate function沿着axis = 0合并两个dataframes,然后按列group by并对它们进行sum
df3 = pd.concat([df, df2], axis=0).groupby('Things').sum().reset_index()
df3

输出:

    Things  Price
0   apple      6
1     cup     10
2     pen      6
3  pencil      8

1
你可以合并、添加,然后删除中间列:
common = pd.merge(
    df,
    df2,
    on='Things',
    how='outer').fillna(0)
common['Price'] = common.Price_x + common.Price_y
common.drop(['Price_x', 'Price_y'], axis=1, inplace=True)
>>> common
    Things  Price
0   pen 6.0
1   pencil  8.0
2   apple   6.0
3   cup 10.0

1
您还可以在两个数据帧上将Things设置为索引,然后使用add(..., fill_value=0)
df.set_index('Things').add(df2.set_index('Things'), fill_value=0).reset_index()

#  Things   Price
#0  apple    6.0
#1    cup   10.0
#2    pen    6.0
#3 pencil    8.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接