添加特定于行的时间增量(日期时间清洁)(日期时间)

adding time delta specific to row (Date time Cleaning)(Date time)

系列数据我有2个文件。每个数据观察有20秒延迟

文件 1

文件 2

预期输出

到目前为止我做了什么

带代码

您可以用 freq='20s' 生成一个 date_range()

请注意,我将 4 月 31 日更改为有效日期。我假设真实数据将具有有效日期。

dfs = []
for file in files:
    column_name = pd.read_csv(file, index_col=False).columns[0]
    df = pd.read_csv(file, index_col=False, names=['col1', 'col2', 'col3'], skiprows=1)
    
    # generate date range with frequency of 20 seconds
    start = pd.to_datetime(column_name, dayfirst=True)
    df['col4'] = pd.date_range(start=start, periods=len(df), freq='20s')
    
    dfs.append(df)
df = pd.concat(dfs)

#    col1  col2  col3                col4
# 0     3     5     6 2005-03-31 23:59:00
# 1     4     6     7 2005-03-31 23:59:20
# 2     8     9    10 2005-03-31 23:59:40
# 0    10    20    30 2007-06-01 23:59:00
# 1    40    50    60 2007-06-01 23:59:20
# 2    70    80    90 2007-06-01 23:59:40

要在连接后更改频率,您可以 groupby() 每个子数据帧(每个从索引 0 重新开始) 并用新的 freq:

重新生成 date_range()
freq = '30s'
df['col4'] = df.groupby((df.index == 0).cumsum())['col4'].apply(
    lambda g: pd.Series(pd.date_range(g[0], periods=len(g), freq=freq)))

#    col1  col2  col3                col4
# 0     3     5     6 2005-03-31 23:59:00
# 1     4     6     7 2005-03-31 23:59:30
# 2     8     9    10 2005-04-01 00:00:00
# 0    10    20    30 2007-01-06 23:59:00
# 1    40    50    60 2007-01-06 23:59:30
# 2    70    80    90 2007-01-07 00:00:00