根据公共列数据,删除3个数据帧之间的差异

2024-09-30 16:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个包含传感器数据的数据帧。在进一步处理之前,我正在对数据进行一些清理。我基本上需要保留3个数据集之间的公共时间数据,并丢弃每个数据帧中不在其他数据帧中的行。我对熊猫比较陌生,在我使用SQL之前,我想知道是否有任何方法可以通过熊猫实现这一点

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

dataframe_csv

在上面的屏幕截图中,由于我捕获数据的方式,我无法精确同步时间,因此当DF1有01/05/2020 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

但这需要为每个数据帧完成,因为我首先需要单独使用它们


Tags: 文件csv数据方法sql屏幕时间传感器
1条回答
网友
1楼 · 发布于 2024-09-30 16:19:50

考虑到所有数据帧(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

相关问题 更多 >