Pandas,根据共同的列数据消除3个数据框之间的差异。

问题描述 投票:1回答:1

我有3个包含传感器数据的数据框。在进一步处理数据之前,我正在对数据进行一些清理。我基本上需要保留3个数据集之间的共同时间数据,并丢弃每个数据框中不在其他数据框中的行。我对pandas比较陌生,在使用类似SQL这样的东西之前,我想知道是否有什么方法可以用pandas来实现?

为了让大家更好地理解我的意思,这里是我在Excel中使用的数据框的csv文件的截图。

dataframe_csv

正如上面的截图,由于我捕捉数据的方式,我不能完全同步时间,所以当DF1有01052020 19:33:54时间戳时,DF2和DF3没有,但所有的数据帧都会有DF3的起始时间戳,所以我想从所有3个数据帧中删除不常见的时间列数据值。我也必须对每个文件末尾的数据做同样的处理。

这可能吗?

我想澄清一下,我所需要的输入和输出将类似于下面。

DF1
Time        DeviceID SensorData
19:44:01    IMU1    0.26
19:44:02    IMU1    0.25
19:44:03    IMU1    0.25
19:44:04    IMU1    0.25


DF2
19:44:02    IMU2    0.27
19:44:03    IMU2    0.23
19:44:04    IMU2    0.22
19:44:05    IMU2    0.28

DF3
19:44:03    IMU3    0.23
19:44:04    IMU3    0.15
19:44:05    IMU3    0.07
19:44:06    IMU3    0.45

Output:
DF1
19:44:03    IMU1    0.25
19:44:04    IMU1    0.25

DF2
19:44:03    IMU2    0.23
19:44:04    IMU2    0.22

DF3
19:44:03    IMU3    0.23
19:44:04    IMU3    0.15

但这需要对每个数据帧进行处理,因为我需要先分别使用它们。

python pandas dataframe pandas-groupby
1个回答
1
投票

考虑到你所有的数据集(df1,df2,df3)都有相同的列名,你可以这样做。

In [1130]: s = df1.merge(df2,on='Time').merge(df3,on='Time')['Time']

In [1134]: df1 = df1[df1.Time.isin(s)]                                                                                                                                                                      

In [1135]: df2 = df2[df2.Time.isin(s)]                                                                                                                                                                      

In [1136]: df3 = df3[df3.Time.isin(s)]                                                                                                                                                                      

In [1137]: df1                                                                                                                                                                                              
Out[1137]: 
       Time DeviceID  SensorData
2  19:44:03     IMU1        0.25
3  19:44:04     IMU1        0.25

In [1138]: df2                                                                                                                                                                                              
Out[1138]: 
       Time DeviceID  SensorData
1  19:44:03     IMU2        0.23
2  19:44:04     IMU2        0.22

In [1139]: df3                                                                                                                                                                                              
Out[1139]: 
       Time DeviceID  SensorData
0  19:44:03     IMU3        0.23
1  19:44:04     IMU3        0.15
© www.soinside.com 2019 - 2024. All rights reserved.