【问题标题】:Assign values in pandas column based on another column根据另一列在 pandas 列中分配值
【发布时间】:2018-09-09 09:13:12
【问题描述】:

我有两个如下所示的数据框:

一个

Timestamp C1 C2 C3
1 0 0 0 
2 0 0 0
3 0 0 0
4 0 0 0
5 0 0 0
6 0 0 0
7 0 0 0

和 乙

Timestamp C1 C2 C3
2 0 0 0
3 v1 v2 v3
4 v4 v5 v6
7 0 0 0

我想合并两个数据集,并根据 Timestamp 列将 A 中的零替换为 B 中的值,并拥有一个新的 A 数据框,如下所示:

Timestamp C1 C2 C3
1 0 0 0 
2 0 0 0
3 v1 v2 v3
4 v4 v5 v6
5 0 0 0
6 0 0 0
7 0 0 0

【问题讨论】:

  • 使用pd.merge()

标签: python pandas replace merge


【解决方案1】:

我认为需要mask0 替换为NaNs 为combine_first

#convert columns to indices if necessary
#A = A.set_index('Timestamp')
#B = B.set_index('Timestamp')

df = B.mask(B == 0).combine_first(A)
#alternative
#df = B.replace({0:np.nan}).combine_first(A)
print (df)
           C1  C2  C3
Timestamp            
1           0   0   0
2           0   0   0
3          v1  v2  v3
4          v4  v5  v6
5           0   0   0
6           0   0   0
7           0   0   0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2016-11-22
    • 2020-12-11
    • 2018-04-15
    • 2020-09-26
    • 2014-08-21
    • 2016-02-01
    相关资源
    最近更新 更多