如何在保持行数的同时合并2个DF?
日期是唯一的主键,事实上,这两个数据文件是从同一个父数据文件中过滤出来的。
df_afs = df[df['Filesystem'].str.contains(".snapshot") == False]
df_sfs = df[df['Filesystem'].str.contains(".snapshot") == True]df_all = pd.merge(df_afs,
df_sfs[['date', 'sfs_volume','sfs_kbytes','sfs_used','sfs_avail']],
on = 'date',
how = 'outer')df_afs
date hostname afs_volume afs_kbytes afs_used afs_avail
3 09/02/2020 00:19:16 nascn01 /vol/vol0/ 347277596 115158404 232119192
5 09/02/2020 00:19:16 nascn01 /vol/vol1/ 996148 492 995656
7 09/02/2020 00:19:16 nascn01 /vol/vol2/ 996148 656 995492
9 09/02/2020 00:19:16 nascn01 /vol/vol3/ 996148 652 995496
11 09/02/2020 00:19:16 nascn01 /vol/vol4/ 996148 564 995584df_sfs
date hostname sfs_volume sfs_kbytes sfs_used sfs_avail
4 09/02/2020 00:19:16 nascn01 /vol/vol0/.snapshot 18277768 3975892 14301876
6 09/02/2020 00:19:16 nascn01 /vol/vol1/.snapshot 52428 3520 48908
8 09/02/2020 00:19:16 nascn01 /vol/vol2/.snapshot 52428 3208 49220
10 09/02/2020 00:19:16 nascn01 /vol/vol3/.snapshot 52428 3568 48860
12 09/02/2020 00:19:16 nascn01 /vol/vol4/.snapshot 52428 3432 48996发布于 2020-04-09 07:55:43
你需要:
指定左边的dataframe列和右边的dataframe列。
left_on = 'date', right_on = 'date'..您可以在线访问许多文章,查看哪种合并类型最适合您的情况,但是日期行不是唯一的这一事实可能会为维护相同数量的列提供困难,因为不清楚它们应该如何合并。有关更多信息,请参见:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
也许您可以尝试在第一个dataframe中为这个目的创建一个新列,方法是连接,这样就可以将dataframes连接到
df_afs['afs_volume_rec'] = df_afs['afs_volume_rec'] + '.snapshot'后面跟着此列的合并,而不是日期。
left_on = 'afs_volume_rec', right_on = 'sfs_volume'https://stackoverflow.com/questions/61116070
复制相似问题