【发布时间】:2016-01-20 01:53:17
【问题描述】:
我正在使用名为 df_data 的 MultiIndex pandas DataFrame 中的以下面板数据:
y x
n time
0 0 0.423607 -0.307983
1 0.565563 -0.333430
2 0.735979 -0.453137
3 0.962857 1.671106
1 0 0.772304 1.221366
1 0.455327 -1.024852
2 0.864768 0.609867
3 0.334429 -2.567936
2 0 0.435553 -0.259228
1 0.221501 0.484677
2 0.773628 0.650288
3 0.293902 0.566452
n 索引个人(有 500 个),t 索引时间。这是一个平衡的面板。我想创建一个随机样本 nn=100 个人替换。此外,如果某个人进入随机样本,则该人的所有 4 次观测值 (t=0,1,2,3) 都应分配给该样本。
以下行几乎是我想要的:
df_sample = df_data.loc[np.random.randint(3, size=100).tolist()]
但是,它不会重复对个人进行抽样。因此,如果创建的随机变量列表是 [2, 3, 2, 4, 1, ...],则第三个个体(索引 = 2 是第三个个体)仅被选择一次,而不是两次进入随机样本。这意味着只要上面的随机向量不止一次地包含同一个人,我最终在随机样本中得到的个人少于 100 个(每个人有 4 次观察)。
我也尝试了df_data.samplefunction,但我似乎无法处理面板中的特定多级索引。
我可以编写各种循环来完成这项工作,但我认为应该有一种更简单(更快)的方法来做到这一点。
我在 Python 3.5 上,我使用的是 pandas 0.17.1 版。
谢谢。
【问题讨论】:
标签: python pandas dataframe sampling