首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从两个不同的dataframes中添加两列,所有其他列都相等

从两个不同的dataframes中添加两列,所有其他列都相等
EN

Stack Overflow用户
提问于 2018-04-06 12:06:10
回答 2查看 64关注 0票数 2

如何从两个不同的DataFrames中添加两个列,其中所有列都相等,但我想添加的列除外?

参见下面的示例代码:

代码语言:javascript
运行
复制
#IN:
import pandas as pd
import numpy as np
#Observe that 'col2' in both dataframes are equal
df1 = pd.DataFrame({'col1': [3.2, 4.4, 6.5, np.NaN], 'col2': [1.2, 2.2, np.NaN, 5.7]})

     col1    col2
0    3.2     1.2
1    4.4     2.2
2    6.5     nan
3    nan     5.7

df2 = pd.DataFrame({'col1': [1.0, 2.0, 3.0, 4.0], 'col2': [1.2, 2.2, np.NaN, 5.7]})

     col1    col2
0    1.0     1.2
1    2.0     2.2
2    3.0     nan
3    4.0     5.7

# new_df = [INSERT SOME MAGIC FUNCTION HERE]
# I tried: new_df = df1.add(df2, level='col1')    
# but obviously that did not work

#OUT (This is what I want):
print(new_df)

     col1   col2
0    4.2    1.2
1    6.4    2.2
2    9.5    nan
3    4.0    5.7

观察到np.NaN + some_float = some_float

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-06 12:09:10

这是一条路。只需记住,当您添加2系列fillna(0)

代码语言:javascript
运行
复制
res = pd.DataFrame({'col1': df1['col1'].fillna(0) + df2['col1'].fillna(0),
                    'col2': df1['col2']})

print(res)

#    col1  col2
# 0   4.2   1.2
# 1   6.4   2.2
# 2   9.5   NaN
# 3   4.0   5.7
票数 4
EN

Stack Overflow用户

发布于 2018-04-06 12:10:03

我认为你可以这么做:

代码语言:javascript
运行
复制
new_df = df1.copy()
new_df['col1'] = df1['col1'].fillna(0).add(df2['col1'])

    col1    col2
0   4.2     1.2
1   6.4     2.2
2   9.5     NaN
3   4.0     5.7
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49692483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档