将值保存在数据框中的for循环中

时间:2016-12-09 18:31:02

标签: python pandas for-loop dataframe

我试图找出如何解决我的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

因此代码不会将实际数据写入数据框。它只在整列中写出时间计算的最后一个元素。

1 个答案:

答案 0 :(得分:1)

您可以简单地从整个索引中减去第一个索引。

(df.index - df.index[0]).seconds

如果你想要秒数就可以做到

dt

或者,如果您的专栏使用df.TimeDiff.dt.seconds 访问者

{{1}}