添加特定于行的时间增量(日期时间清洁)(日期时间)
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
系列数据我有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