我试图找出如何解决我的python问题。我正在使用pandas
创建数据框以保存查询中的数据。我想用列" TimeDiff"扩展这个数据框。正如您在下表中看到的那样。从第一个时间元素中减去时间的计算是有效的。我的问题是如何用正确值的计算数据创建一个新列。
Time Temperature Humidity Pulse
2013-12-12 12:12:12 25 33 65
2013-12-12 12:12:15 26 30 67
2013-12-12 12:12:18 27 29 68
2013-12-12 12:12:22 28 32 64
Data frame should look like this:
Time Temperature Humidity Pulse TimeDiff
2013-12-12 12:12:12 25 33 65 0
2013-12-12 12:12:15 26 30 67 3
2013-12-12 12:12:18 27 29 68 6
2013-12-12 12:12:22 28 32 64 10
我计算时差并将其添加到数据框的代码如下所示:
df = pd.DataFrame( [[ij for ij in i] for i in rows] )
df.rename(columns={0: 'Time', 1: 'Temperature', 2: 'Humidity', 3: 'Pulse', 4:'MicValue'}, inplace=True);
df = df.sort(['Time'], ascending=[1]);
sLength = len(df['Time'])
for i in range(sLength):
diff = df['Time'][df.index[i]] - df['Time'][df.index[0]]
totalSeconds = diff.total_seconds()
# df = pd.DataFrame({'DateDiff': totalSeconds}, index=df.index)
# df['Diff'] = df['Diff'].map(totalSeconds)
执行此代码将得到以下结果:
TimeDiff
740
740
740
740
因此代码不会将实际数据写入数据框。它只在整列中写出时间计算的最后一个元素。
答案 0 :(得分:1)
您可以简单地从整个索引中减去第一个索引。
(df.index - df.index[0]).seconds
如果你想要秒数就可以做到
dt
或者,如果您的专栏使用df.TimeDiff.dt.seconds
访问者
{{1}}