生成用于连接纵向数据的Pandas数据帧



我有不同的纵向数据。我想创建一个";脚手架";将这些数据连接到的数据帧。我有N个纵向个体,我知道每个时间序列组件应该是Y周期长、均匀的纵向段。我正试图找到一种干净的方法来构建这个脚手架数据文件,其中一列表示个人ID,另一列表示时间,而不使用循环。假设Y=10。以下是我所想的两个人的演示:

timeseries = pd.DataFrame(np.arange(10),columns=['DATE'])
block1 = timeseries.copy()
block1['ID'] = 1
block2 = timeseries.copy()
block2['ID'] = 2
example = pd.concat([block1,block2])
example[['ID','DATE']] 

用循环N次来构建这个并不是世界末日,但必须有更好的方法。

在列表理解中使用assignconcat:

Y = 10
example = pd.concat([timeseries.assign(ID=n+1) for n in range(Y)])[['ID', 'DATE']]

备选方案:

Y = 10
example = (pd.concat([timeseries]*Y)
.assign(ID=lambda d: np.arange(len(d))//len(timeseries)+1)
[['ID', 'DATE']]
)

输出:

ID  DATE
0    1     0
1    1     1
2    1     2
3    1     3
4    1     4
..  ..   ...
5   10     5
6   10     6
7   10     7
8   10     8
9   10     9
[100 rows x 2 columns]

相关内容

  • 没有找到相关文章

最新更新