从 csv 中删除多余的时间戳
Remove redundant timestamps from csv
我使用 pandas DataFrame 从不同传感器的记录创建了一个 CSV 文件。 CSV 文件基本上如下所示:
我想去掉多余的时间戳,而是让共享时间戳的所有传感器条目出现在同一行中(例如图像中的 x2 和 x3)。
此外,共享时间戳的标签始终相同,但也需要减少。
到目前为止,我遇到了 drop_duplicate()
函数,它只删除整行。
编辑:这是上面示例的文本版本:
timestamp,sensor_a,sensor_b,sensor_c,label
1,x1,,,0
2,,x2,,0
2,,,x3,0
3,x4,,,1
4,,,,1
5,,x6,,1
5,,,x7,1
我会假设你把数据存储在一个文本文件sensors.txt
中,所以我们根据下面的代码
在timestamp
的基础上合并数据
import pandas as pd
df = pd.read_csv('sensors.txt', delimiter=',', header=0)
df2 = df.groupby('timestamp').ffill()
df2['timestamp'] = df['timestamp']
df2 = df2.groupby('timestamp').bfill()
df2['timestamp'] = df['timestamp']
df2 = df2.drop_duplicates()
df = df2[['timestamp', 'sensor_a', 'sensor_b', 'sensor_c', 'label']]
print(df)
输出
timestamp sensor_a sensor_b sensor_c label
0 1 x1 NaN NaN 0
1 2 NaN x2 x3 0
3 3 x4 NaN NaN 1
4 4 NaN NaN NaN 1
5 5 NaN x6 x7 1
将根据您在下方评论中提出的问题进行进一步编辑
祝你好运
我使用 pandas DataFrame 从不同传感器的记录创建了一个 CSV 文件。 CSV 文件基本上如下所示:
我想去掉多余的时间戳,而是让共享时间戳的所有传感器条目出现在同一行中(例如图像中的 x2 和 x3)。 此外,共享时间戳的标签始终相同,但也需要减少。
到目前为止,我遇到了 drop_duplicate()
函数,它只删除整行。
编辑:这是上面示例的文本版本:
timestamp,sensor_a,sensor_b,sensor_c,label
1,x1,,,0
2,,x2,,0
2,,,x3,0
3,x4,,,1
4,,,,1
5,,x6,,1
5,,,x7,1
我会假设你把数据存储在一个文本文件sensors.txt
中,所以我们根据下面的代码
timestamp
的基础上合并数据
import pandas as pd
df = pd.read_csv('sensors.txt', delimiter=',', header=0)
df2 = df.groupby('timestamp').ffill()
df2['timestamp'] = df['timestamp']
df2 = df2.groupby('timestamp').bfill()
df2['timestamp'] = df['timestamp']
df2 = df2.drop_duplicates()
df = df2[['timestamp', 'sensor_a', 'sensor_b', 'sensor_c', 'label']]
print(df)
输出
timestamp sensor_a sensor_b sensor_c label
0 1 x1 NaN NaN 0
1 2 NaN x2 x3 0
3 3 x4 NaN NaN 1
4 4 NaN NaN NaN 1
5 5 NaN x6 x7 1
将根据您在下方评论中提出的问题进行进一步编辑
祝你好运