【发布时间】:2016-08-15 00:00:54
【问题描述】:
我有一个 daframe,其周期为 1 个月,频率为 1 秒。
记录之间的时间步长并不总是1秒的问题。
time c1 c2
2013-01-01 00:00:01 5 3
2013-01-01 00:00:03 7 2
2013-01-01 00:00:04 1 5
2013-01-01 00:00:05 4 3
2013-01-01 00:00:06 5 6
2013-01-01 00:00:09 4 2
2013-01-01 00:00:10 7 8
然后我想创建一个具有相同列的空数据框,并在整个期间进行更正。这意味着一个月的记录数与秒数一样多。这个空数据框原则上是用 nan 值实现的:
time c1 c2
2013-01-01 00:00:01 nan nan
2013-01-01 00:00:02 nan nan
2013-01-01 00:00:03 nan nan
2013-01-01 00:00:04 nan nan
2013-01-01 00:00:05 nan nan
2013-01-01 00:00:06 nan nan
2013-01-01 00:00:07 nan nan
2013-01-01 00:00:08 nan nan
2013-01-01 00:00:09 nan nan
2013-01-01 00:00:10 nan nan
然后比较两者,并用我的第一个数据框的公共行填充空行。不常见的应该保留 nan 值。
time c1 c2
2013-01-01 00:00:01 5 3
2013-01-01 00:00:02 nan nan
2013-01-01 00:00:03 7 2
2013-01-01 00:00:04 1 5
2013-01-01 00:00:05 4 3
2013-01-01 00:00:06 5 6
2013-01-01 00:00:07 nan nan
2013-01-01 00:00:08 nan nan
2013-01-01 00:00:09 4 2
2013-01-01 00:00:10 7 8
我的尝试:
#Read from a file the first dataframe
df1=pd.read_table(fin,parse_dates=0],names=ch,index_col=0,header=0,decimal='.',skiprows=c)
#create an empty dataframe
N=86400 * 31#seconds per month
index=pd.date_range(df1.index[0], periods=N-1, freq='1s')
df2=pd.DataFrame(index=index, columns=df1.columns)
现在我尝试使用 merge 或 concat 但没有预期的结果:
df2.merge(df1, how='outer')
pd.concat([df2,df1], axis=0, join='outer')
【问题讨论】:
标签: python pandas merge concat