Python 组合数据帧

Python 组合数据帧,python,pandas,Python,Pandas,我尝试使用下面给出的代码在python中合并2个数据帧。以下是有关数据帧的信息 nlxdf列名称为“NlxTTL”和“NlxTime” pittldf带有“pittlState”、“pittlSTC”、“piVideoSTC”列 以下是pittldf数据的样子: pittlSTC pittlState 1.39e+10 0 1.4e+10 1 1.4e+10 0 1.4e+10 1 1.4e+10 0 1.4e+10 1 1.4e+10

我尝试使用下面给出的代码在python中合并2个数据帧。以下是有关数据帧的信息

  • nlxdf列名称为“NlxTTL”和“NlxTime”
  • pittldf带有“pittlState”、“pittlSTC”、“piVideoSTC”列
以下是pittldf数据的样子:

pittlSTC    pittlState
1.39e+10    0
1.4e+10     1
1.4e+10     0
1.4e+10     1
1.4e+10     0
1.4e+10     1
1.4e+10     1
1.4e+10     1
1.4e+10     1
1.4e+10     0
1.4e+10     1
1.4e+10     0
1.4e+10     1
下面是nlxdf的外观

NlxTTL  NlxTime
0   13788602129.0
1   13789602296.0
0   13790602496.0
1   13791602629.0
0   13792602829.0
1   13793602996.0
0   13794603162.0
1   13795603329.0
0   13796603496.0
1   13797603662.0
0   13798603829.0
1   13799603996.0
0   13800604162.0
1   13801604329.0
以下是我使用的脚本:

import scipy.io as sio
import pandas as pd

data = sio.loadmat('testRun2.mat')

nlxTTL = list(data['NlxTTL'][0])
nlxTime = list(data['NlxTime'][0])
pittlState = list(data['pittlState'][0])
pittlSTC = list(data['pittlSTC'][0])
piVideoSTC = list(data['piVideoSTC'][0])

nlxdf = pd.DataFrame({'NlxTTL':nlxTTL, 'NlxTime':nlxTime})
pittldf = pd.DataFrame({'pittlState': pittlState, 'pittlSTC':pittlSTC, 'piVideoSTC':piVideoSTC})

merged_df = pittldf.merge(nlxdf, left_on='pittlState', right_on='NlxTTL', how='outer')
运行脚本后,我期望得到以下结果:

NlxTTL  NlxTime    pittlSTC    pittlState
0   13788602129.0   1.39e+10    0
1   13789602296.0   1.4e+10     1
0   13790602496.0   1.4e+10     0
1   13791602629.0   1.4e+10     1
0   13792602829.0   1.4e+10     0
1   13793602996.0   1.4e+10     1
0   13794603162.0     NA        NA
1   13795603329.0   1.4e+10     1
0   13796603496.0     NA        NA
1   13797603662.0   1.4e+10     1
0   13798603829.0     NA        NA
1   13799603996.0   1.4e+10     1
0   13800604162.0   1.4e+10     0
1   13801604329.0   1.4e+10     1
NA      NA          1.4e+10     0
NA      NA          1.4e+10     1 
但是我不能得到这个输出。我应该如何进行?谢谢

编辑我正在尝试合并非唯一键(二进制值)上的2个数据帧

我将解释,这些数据是如何获得的。在将TTL脉冲发送到2台不同的机器(如低(0)高(1)低(0)高(1)等)后,收集此数据。记录时间。因此,对于每台机器,您应该接收高(即1)或低(即0)。但在其中一台机器上,我最终丢失了一些输入,如pittldf中所示,在连续的1或高中,应该有低(0)和高(1)的重复


我想知道是否有一种方法可以使用状态(1或0)组合这些数据帧以正确地对齐时间

抱歉,我没有在这里得到合并,您正在尝试在非唯一的二进制值上进行合并,您希望如何在这里匹配?我理解您的问题,但是否有任何方法可以继续使用此方法。我将更新我的问题,以包含您提供的信息。谢谢,我不理解这两个数据集之间的关系,请编辑您的问题以进一步解释这一点,是1对1,1对N,N对N…NlxTTL的每个值都是1对1关系,我的数据集中应该有一个pittlSTC值,正如上面的编辑中所解释的那样