我有一个主数据帧D1:
PRCESS_NO VALUE COUNT TIME
18 25855 69 13:41:56
19 10254 8 13:42:14
20 10254 4 13:42:20
21 68522 18 13:42:29
22 68522 75 13:42:33
23 25855 21 13:42:37
24 10254 658 13:42:53
25 10254 84 13:42:59
D2数据框:
PRCESS_NO VALUE COUNT TIME
21 68522 12 14:32:25
22 68522 10 14:42:39
23 25855 54 14:38:25
我要按照以下条件使用D2数据帧中的值更新主数据帧D1:
最终D1数据框:
PRCESS_NO VALUE COUNT TIME
18 25855 69 13:41:56
19 10254 8 13:42:14
20 10254 4 13:42:20
21 68522 30 14:32:25
22 68522 85 14:42:39
23 25855 75 14:38:25
24 10254 658 13:42:53
25 10254 84 13:42:59
答案 0 :(得分:1)
将DataFrame.add
与combine_first
一起使用:
cols = ['VALUE','COUNT']
D1 = D1.set_index('PRCESS_NO')
D2 = D2.set_index('PRCESS_NO')
D1[cols] = D1[cols].add(D2[cols], fill_value=0).astype(int)
D1['TIME'] = D2['TIME'].combine_first(D1['TIME'])
D1 = D1.reset_index()
print (D1)
PRCESS_NO VALUE COUNT TIME
0 18 25855 69 13:41:56
1 19 10254 8 13:42:14
2 20 10254 4 13:42:20
3 21 137044 30 14:32:25
4 22 137044 85 14:42:39
5 23 51710 75 14:38:25
6 24 10254 658 13:42:53
7 25 10254 84 13:42:59
D1 = (pd.concat([D1,D2])
.groupby('PRCESS_NO', as_index=False)
.agg({'VALUE':'sum', 'COUNT':'sum', 'TIME':'last'}))
print (D1)
PRCESS_NO VALUE COUNT TIME
0 18 25855 69 13:41:56
1 19 10254 8 13:42:14
2 20 10254 4 13:42:20
3 21 137044 30 14:32:25
4 22 137044 85 14:42:39
5 23 51710 75 14:38:25
6 24 10254 658 13:42:53
7 25 10254 84 13:42:59