我试图获取csv文件中值出现之间的平均,最大和最小时间差。 包含多个列和行。 我目前正在使用python并尝试使用熊猫来解决我的问题。
我设法将csv文件分解为我想从中获取时差的列和time列。
“有效载荷”列中发生“价值出现”的地方。
看起来像:
时间|有效载荷 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
跳过空格 稍后获得最大,最小和平均差异。
答案 0 :(得分:0)
首先使用dropna
,然后使用Series.diff
使用的DataFrame:
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)