我有两个数据帧。它们在形状和形式上是相同的。它们都包含许多模拟,每个模拟都包含相同数量的步骤,表示为time
df_init = pd.DataFrame({'sim' : [1, 1, 1, 1, 2, 2, 2, 2],
'time' : [0, 1, 2, 3, 0, 1, 2, 3],
'values' : [1, 2, 1, 0, 2, 1, 2, 3]
})
df_next = pd.DataFrame({'sim' : [1, 1, 1, 1, 2, 2, 2, 2],
'time' : [0, 1, 2, 3, 0, 1, 2, 3],
'values' : [2, 4, 5, 6, 3, 4, 5, 7]
})
df_init
Out[3]:
sim time values
0 1 0 1
1 1 1 2
2 1 2 1
3 1 3 0
4 2 0 2
5 2 1 1
6 2 2 2
7 2 3 3
df_next
Out[4]:
sim time values
0 1 0 2
1 1 1 4
2 1 2 5
3 1 3 6
4 2 0 3
5 2 1 4
6 2 2 5
7 2 3 7
我想构造一个新的数据帧,其中对于每个模拟sim
,第一个n
时间步来自df_init
,其余的来自df_next
例如,如果n=2
,结果如下
df_result
Out[3]:
sim time values
0 1 0 1
1 1 1 2
2 1 2 5
3 1 3 6
4 2 0 2
5 2 1 1
6 2 2 5
7 2 3 7
如果只有一个模拟,这将很容易
df_next.iloc[:n] = df_init.iloc[:n]
但是当有一堆模拟的时候,我怎么做呢?我考虑过groupby()
,但我真的不知道如何应用它来组合两个数据帧
当然,这是一个构造的例子。在我的真实数据中,我有一堆值列,数千个模拟,时间变量延伸几百步
同样,我保证数据帧具有相同的形状,并且列sim
和time
在这两个数据帧中是相同的
我认为need filter by ^{} -从} 切换到hr并按^{} 排序:
0
开始,减去1
,然后^{相关问题 更多 >
编程相关推荐