结合数据帧熊猫

时间:2017-02-08 13:39:56

标签: python pandas

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

    列名为“NlxTTL”和“NlxTime”的
  • nlxdf
  • 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个不同的机器后收集此数据为LOW(0)HIGH(1)LOW(0)HIGH(1),依此类推。和录音时间分别。因此,对于每台机器,您应该接收HIGH(即1)或LOW(即0)。但是在其中一台机器上,我最终错过了一些输入,如 pittldf 所示,连续的1或HIGH,它应该重复LOW(0)和HIGH(1)。

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

0 个答案:

没有答案