python - 获取csv文件中两个值之间的时间差
问题描述
我试图获取 csv 文件中值出现之间的平均、最大和最小时间差。包含多个列和行。我目前正在使用 python 并尝试使用 pandas 来解决我的问题。
我已设法将 csv 文件分解为我想要从中获取时差的列和时间列。“有效负载”列“值出现”发生的位置。
看起来像:
时间 | 有效载荷 12.1 2368 13.8 2508
我还尝试在值发生时获取数组中的时间,并尝试逐步遍历数组但失败了。我觉得有一种更简单的方法可以做到这一点。
def average_time(avg_file):
avg_read = pd.read_csv(avg_file, skiprows=2, names=new_col_names, usecols=[2, 3], na_filter=False, skip_blank_lines=True)
test=[]
i=0
for row in avg_read.payload:
if row != None:
test[i]=avg_read.time
i+=1
if len[test] > 2:
average=test[1]-test[0]
i=0
test=[]
return average
csv 文件目前看起来像:
time | payload
12.1 2250
12.5 2305
12.9 (blank)
13.1 (blank)
13.5 2309
14.6 2350
14.9 2680
15.0 (blank)
我想获得有效载荷列中的值之间的时间差异。示例时间间隔
2250 and 2305 --> 12.5-12.1 = 0.4 sec
和得到之间的区别
2305 and 2309 --> 13.5-12.5 = 1 s
跳过空白数字 稍后获得最大、最小和平均差异。
解决方案
先用dropna
再用Series.diff
使用的数据框:
print(df)
time payload
0 12.1 2250.0
1 12.5 2305.0
2 12.9 NaN
3 13.1 NaN
4 13.5 2309.0
5 14.6 2350.0
6 14.9 2680.0
7 15.0 NaN
df.dropna().time.diff()
0 NaN
1 0.4
4 1.0
5 1.1
6 0.3
Name: time, dtype: float64
注意我假设你的(blank)
值是NaN
,否则在运行我的代码之前使用以下内容:
df.replace('(blank)', np.NaN, inplace=True, axis=1)
# Or if they are whitespaces
df.replace('', np.NaN, inplace=True, axis=1)
推荐阅读
- amazon-web-services - 在 AWS windows 机器上运行时,在 Jmeter 性能测试中观察到更高的响应时间
- php - 使用 Codeigniter 的模型 - 根据主键保存的问题
- android - 管理多个模块中的冗余依赖项
- node.js - 无法在 mongoose 模块下将 MongoDB 中的虚拟字段导出并传递到 Node.JS 中的 Handlebars
- c# - 使用 Linq 形成数据库中不存在的关系
- javascript - Vue,firestore:合并集合后如何显示 LIVE 数据
- sql - 使用 SQL 调整拆分的历史股票价格
- gnome - 在 GJS 中包含二级来源
- python - 如何在忽略python括号中的部分的同时拆分字符串
- javascript - 创建 jQuery 的 Vanilla JS 等效 css 方法