Skip to content

Commit

Permalink
Merge pull request #28 from rubdos/dataframe_absolute_time
Browse files Browse the repository at this point in the history
Added option to TdmsObject.as_dataframe to use absolute times
  • Loading branch information
adamreeve committed Jul 9, 2015
2 parents 3ab7907 + 079bda2 commit 4d786e5
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions nptdms/tdms.py
Original file line number Diff line number Diff line change
Expand Up @@ -648,6 +648,30 @@ def time_track(self):
offset + (len(self.data) - 1) * increment,
len(self.data))

def pandas_time_track(self):
"""Return an array of absolute time for this channel
This depends on the object having the wf_increment
and wf_start_offset properties defined.
:rtype: pandas Series.
:raises: KeyError if required properties aren't found
"""

import pandas as pd

try:
increment = self.property('wf_increment')
offset = pd.to_timedelta(self.property('wf_start_offset'), unit='s')
starttime = self.property('wf_start_time')
except KeyError:
raise KeyError("Object does not have time properties available.")

return pd.date_range(start=offset + pd.to_datetime(starttime),
periods=len(self.data),
freq=str(int(increment*1e6))+'U')

def _initialise_data(self, memmap_dir=None):
"""Initialise data array to zeros"""

Expand Down Expand Up @@ -685,7 +709,7 @@ def _update_data(self, new_data):
else:
self.data.extend(new_data)

def as_dataframe(self):
def as_dataframe(self, absoluteTime=False):
"""
Converts the TDMS object to a DataFrame
:return: The TDMS object data.
Expand All @@ -694,8 +718,12 @@ def as_dataframe(self):

import pandas as pd

# When absoluteTime is True, use the wf_start_time as offset for the time_track()
time = (self.pandas_time_track() if absoluteTime
else self.time_track())

return pd.DataFrame(self.data,
index=self.time_track(),
index=time,
columns=[self.path])


Expand Down

0 comments on commit 4d786e5

Please sign in to comment.