我有两个不同的数据帧。 第一个具有以下形式:
"start time" "end time" "Value1 " "Value2 "
12:00 12:01 0 0
12:01 12:02 1 2
12:02 12:03 3 4
第二个具有以下格式。
"start time" "end time" "Value1 " "Value2 "
12:00 12:01 0 0
12:01 12:02 1 6
12:02 12:03 0 0
对于两个数据帧,如果Value1为0,则Value 2也为零。 (从值2到值1同样适用)
开始时间和停止时间之间的差异始终为1分钟,并且两个数据帧的行数均相同。 (全天或1440行)
现在我要做的是组合这些数据帧而不考虑0。因此正确的合并数据具有以下格式
"start time" "end time" "Value1_1 " "Value2_1 " "Value1_2 " "Value2_2 "
12:01 12:02 1 2 1 6
我在做什么
df = pd.merge(df1, df2, left_index=True, right_index=True, how='outer')
这根本不会忽略0行。所以我想为什么不先合并它们,然后摆脱0值。这不是一个聪明的方法,但是会做到的。 我想知道是否有更好的方法?
答案 0 :(得分:0)
如果需要,可以在单个DataFrame上合并查询结果。不过,我不确定它是否更优雅或更有效。您的方法似乎也不错。
df = pd.merge(
df1.where(df1['Value 1'] != 0),
df2.where(df2['Value 1'] != 0),
left_index = True,
right_index = True,
how = 'outer')
由于它是外部联接,它将包含一个DataFrame中的值为零而不是另一个DataFrame的记录。如果切换到inner,则只能包含df1和df2都包含给定分钟的非零值的记录。