【发布时间】:2019-05-23 00:39:33
【问题描述】:
我有一个如下所示的数据框 df1:
use_id user_id platform platform_version device
0 22782 26980 ios 10.2 iPhone7
1 22783 29628 android 6.0 Nexus 5
2 22784 28473 android 5.1 SM-G903F
3 22785 15200 ios 10.2 iPhone7
4 22786 28239 android 6.0 ONE E1003
5 22787 12921 android 4.3 GT-I9505
6 22788 28714 android 6.0 SM-G930F
7 22789 28714 android 6.0 SM-G930F
8 22790 29592 android 5.1 D2303
9 22791 28775 ios 10.2 iPhone6
和第二个数据帧 df2(df1 的子集):
use_id user_id device date_created
0 22782 26980 iPhone7 2018/12/12
1 22783 29628 Nexus 5 2019/01/15
2 22784 28473 SM-G903F 2019/01/23
3 22785 15200 iPhone7 2019/01/23
4 22786 28239 ONE E1003 2019/01/23
我想识别 df1 中不存在于 df2 中的新行,将它们附加到 df2,然后使用输入日期更新“date_created”列。
所以 df2 会是这样的:
use_id user_id device date_created
0 22782 26980 iPhone7 2018/12/12
1 22783 29628 Nexus 5 2019/01/15
2 22784 28473 SM-G903F 2019/01/23
3 22785 15200 iPhone7 2019/01/23
4 22786 28239 ONE E1003 2019/01/23
5 22787 12921 GT-I9505 2019/05/22
6 22788 28714 SM-G930F 2019/05/22
7 22789 28714 SM-G930F 2019/05/22
8 22790 29592 D2303 2019/05/22
9 22791 28775 iPhone6 2019/05/22
我能够使用 merge() 获得两个数据帧的差异:
mergedStuff = pd.merge(df1['use_id', 'user_id', 'device'], df2, on=['use_id', 'user_id', 'device'], how='outer', indicator=True).loc[mergedStuff['_merge'] == 'left_only']
然后将新行追加到 df2:
df2 = df2.append(mergedStuff, ignore_index=True)
但我正在努力如何为新的附加行添加如下所示的创建日期。
df2['date_created'] = pd.datetime.now()
有没有简单的方法来实现这一点?
【问题讨论】: