获取csv文件中两个值之间的时差

时间:2019-05-03 18:01:38

标签: python pandas csv parsing time

我试图获取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

跳过空格 稍后获得最大,最小和平均差异。

1 个答案:

答案 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)