【问题标题】:Get a random sample from dataframe with grouped columns?从具有分组列的数据框中获取随机样本?
【发布时间】:2021-03-05 17:30:47
【问题描述】:

我有一个时间序列数据的数据框,名为dates_c,如下所示:

       DATE_T               Da             HN      NAR     TJH
0      2014-01-01 00:11:25  2014-01-01     3520    11931   769.198   
1      2014-01-01 00:11:25  2014-01-01     3560    11942   338.143   
2      2014-01-01 00:11:25  2014-01-01     3542    11937   665.481   
3      2014-01-01 00:11:25  2014-01-01     3563    11944   529.058   
4      2014-01-01 00:11:25  2014-01-01     3535    11936  2883.945

我希望每个 Da + NAR 有 60 个随机行。这就是我所做的:

np.random.seed(987)
columns = ['DATE_T', 'HN', 'TJH']
new = dates_c.groupby(['Da', 'NAR'])[columns].apply(pd.Series.sample, n=60, replace=False).reset_index()

我不断收到此错误:

ValueError: Key 2014-01-01 00:00:00 not in level Index([2014-01-01, 2014-01-02, 2014-01-03, 2014-01-04, 2014-01-05, 2014-01-06,
       2014-01-07, 2014-01-08, 2014-01-09, 2014-01-10,
       ...
       2014-12-22, 2014-12-23, 2014-12-24, 2014-12-25, 2014-12-26, 2014-12-27,
       2014-12-28, 2014-12-29, 2014-12-30, 2014-12-31],
      dtype='object', name='Date', length=320)

【问题讨论】:

    标签: pandas numpy dataframe time-series pandas-groupby


    【解决方案1】:

    这里你需要replace = True,因为某些组可能没有足够的数据点用于 n=60

    out = df.groupby(['Date', 'NOAA_AR']).apply(lambda x : x.sample(n=60,replace=True))
    

    【讨论】:

      【解决方案2】:

      试试:

      dates_count.groupby(['Date', 'NOAA_AR'])[COLS].sample(60).reset_index()
      

      【讨论】:

        猜你喜欢
        • 2022-10-13
        • 1970-01-01
        • 1970-01-01
        • 2023-02-23
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 2018-01-11
        相关资源
        最近更新 更多