Python 从TDMS文件追加数据

Python 从TDMS文件追加数据,python,pandas,dataframe,timestamp,Python,Pandas,Dataframe,Timestamp,我有一个文件夹TDMS文件(也可以是Excel)。 它们存储在5MB包中,但都包含相同的数据结构。 不幸的是,行中没有绝对时间,时间戳以以下格式隐晦地存储在“timestamp”列中 “周二17.11.2020 19:20:15” 但是现在我想加载每个文件,并在同一个图形中一个接一个地绘制它们。 对于一个文件,这是没有问题的,因为我只是将文件的索引用于x轴,但是如果我加载多个文件,每个文件中的索引都是相同的,并且数据重叠 有没有人知道我如何将所有数据写入一个数据帧,但要有一个连续的时间戳,以便可

我有一个文件夹TDMS文件(也可以是Excel)。 它们存储在5MB包中,但都包含相同的数据结构。 不幸的是,行中没有绝对时间,时间戳以以下格式隐晦地存储在“timestamp”列中

“周二17.11.2020 19:20:15”

但是现在我想加载每个文件,并在同一个图形中一个接一个地绘制它们。 对于一个文件,这是没有问题的,因为我只是将文件的索引用于x轴,但是如果我加载多个文件,每个文件中的索引都是相同的,并且数据重叠

有没有人知道我如何将所有数据写入一个数据帧,但要有一个连续的时间戳,以便可以一个接一个地绘制数据,或者我还可以指定一个时间段来查看数据

我的第一个方法如下。 如果有人可以上传一个带有CSV文件(pandas.read.CSV)而不是npTDMS模块的示例,它也会很有帮助


下面是一个CSV示例。它将首先在
/data/
文件夹中创建一组与您的文件相似的文件。然后它会将这些文件读回(使用
glob
查找它们)。它使用pandas.concat将数据帧组合成1,然后解析日期

导入全局
随机输入
进口大熊猫
将matplotlib.pyplot作为plt导入
#创建一组看起来像您的数据的测试文件(注意:我的文件不是5MB,而是100行)
df=pandas.DataFrame([{“value”:random.randint(50100)}表示范围(1000)])
df[“timestamp”]=pandas.date\u范围(
start=“17/11/2020”,周期=1000,频率=“H”
).strftime(r“%a.%d.%m.%Y%H:%m:%S”)
chunks=[df.iloc[i:i+100]表示范围内的i(0,len(df)-100+1100)]
对于索引,枚举中的块(块):
块[[“timestamp”,“value”]]到_csv(f.“/data/data{index}.csv”,index=False)
# ===============
#将文件读回数据帧
dataframe_列表=[]
对于glob.glob(“./data/data.*.csv”)中的文件:
df=pandas.read_csv(文件)
数据帧列表追加(df)
#将所有单个数据帧合并为1
df=pandas.concat(数据帧列表)
#正确设置时间文件
df[“timestamp”]=熊猫。to_datetime(df[“timestamp”],格式=r“%a.%d.%m.%Y%H:%m:%S”)
#使用时间戳作为数据帧的索引,并确保它已排序
df=df.set_index(“时间戳”).sort_index()
#创建绘图
平面图(df)
@Gijs-Wobben

非常感谢你!它工作得非常好,它将节省我很多工作! 作为一名机械工程师,你不会经常编写这样的代码,所以如果其他学科的人能帮助你,我很高兴

这里是基本结构,我是如何直接使用TDMS文件的,因为我后来读到npTDMS模块提供了直接以dataframe形式读取数据的可能性,这是我以前不知道的

import pandas as pd
from nptdms import TdmsFile
from nptdms import tdms
import os,glob


file_names=glob.glob('*.tdms')
    
tdms_file = TdmsFile.read(file_names[0])

# Read the files back into a dataframe
dataframe_list = []
for file in glob.glob("*.tdms"):
    tdms_file = TdmsFile.read(file)
    df = tdms_file['Sheet1'].as_dataframe()
    dataframe_list.append(df)
    
df_all = pd.concat(dataframe_list)    

# Set the time file correctly
df["Timestamp"] = pd.to_datetime(df["Timestamp"], format=r"%a. %d.%m.%Y %H:%M:%S")

# Use the timestamp as the index for the dataframe, and make sure it's sorted
df = df.set_index("Timestamp").sort_index()

# Create the plot
plt.plot(df)
import pandas as pd
from nptdms import TdmsFile
from nptdms import tdms
import os,glob


file_names=glob.glob('*.tdms')
    
tdms_file = TdmsFile.read(file_names[0])

# Read the files back into a dataframe
dataframe_list = []
for file in glob.glob("*.tdms"):
    tdms_file = TdmsFile.read(file)
    df = tdms_file['Sheet1'].as_dataframe()
    dataframe_list.append(df)
    
df_all = pd.concat(dataframe_list)    

# Set the time file correctly
df["Timestamp"] = pd.to_datetime(df["Timestamp"], format=r"%a. %d.%m.%Y %H:%M:%S")

# Use the timestamp as the index for the dataframe, and make sure it's sorted
df = df.set_index("Timestamp").sort_index()

# Create the plot
plt.plot(df)