大熊猫-将两个值相同的数据框加在一起

时间:2019-04-12 20:33:01

标签: python pandas

我有两个字数数据框,假设第一个是...

    word   count
0   HELLO  8
1   MORE   10
2   HELP   19
3   NO     100

第二个是...

     word    count
0    HELLO   10
1    MORE    12
2    NONE    20
3    NO      56

结果应该是...

     word    count
0    HELLO   18
1    MORE    22
2    HELP    19
2    NONE    20
3    NO      156

顺序无关紧要。但我必须确保保留所有单词。如果两个数据帧中都存在该词,则我们将计数相加。如果另一个不存在,我们只需添加它即可。

我想出了如何添加两个数据框...

df_add = df1.add(df2, fill_value=0)

但这就是我所知道的。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

您可以合并数据框和求和,

new_df = df1.merge(df2, on = 'word', how = 'outer')
new_df['count'] = new_df[['count_x', 'count_y']].sum(1)
new_df.drop(['count_x', 'count_y'], 1, inplace = True)

    word    count
0   HELLO   18.0
1   MORE    22.0
2   HELP    19.0
3   NO      156.0
4   NONE    20.0

答案 1 :(得分:1)

您可以一起使用以下pandas.merge这些数据帧。然后将两个count列加起来,最后使用fillna填充NaN

df3 = pd.merge(df1, df2, on='word', how='outer', suffixes=['', '_2'])

df3['count'] = df3['count'].fillna(0) + df3['count_2'].fillna(0)
df3['count'].fillna(df3['count_2'], inplace=True)
df3.drop('count_2', axis=1, inplace=True)

print(df3)
    word  count
0  HELLO   18.0
1   MORE   22.0
2   HELP   19.0
3     NO  156.0
4   NONE   20.0

答案 2 :(得分:1)

您还可以使用append和groupby来使用此衬纸获得结果-

df_1.append(df_2).groupby('word', as_index=False).sum()