【问题标题】:Sub-select a multi-index pandas dataframe to create multiple subsets (using a dictionary)子选择多索引熊猫数据框以创建多个子集(使用字典)
【发布时间】:2017-11-27 06:00:43
【问题描述】:

我有一个类似于以下的数据集:

df_lenght = 240
df = pd.DataFrame(np.random.randn(df_lenght,2), columns=['a','b'] )
df['datetime'] = pd.date_range('23/06/2017', periods=df_lenght, freq='H')
unique_jobs = ['job1','job2','job3',]
job_id = [unique_jobs for i in range (1, int((df_lenght/len(unique_jobs))+1) ,1) ]
df['job_id'] = sorted( [val for sublist in job_id for val in sublist] )
df.set_index(['job_id','datetime'], append=True, inplace=True)

print(df[:5]) 返回:

                                     a         b
  job_id datetime                               
0 job1   2017-06-23 00:00:00 -0.067011 -0.516382
1 job1   2017-06-23 01:00:00 -0.174199  0.068693
2 job1   2017-06-23 02:00:00 -1.227568 -0.103878
3 job1   2017-06-23 03:00:00 -0.847565 -0.345161
4 job1   2017-06-23 04:00:00  0.028852  3.111738

如何创建多个dataframes,每个job_id 值一个?那些输入字典的人可以很容易地检索吗? 谢谢

【问题讨论】:

    标签: python pandas multi-index


    【解决方案1】:

    您可以将groupby 对象解压缩到字典中:

    dfs = {job: df for job, df in df.groupby(level='job_id')}
    

    【讨论】:

    • 谢谢。那么我将如何使用字典来选择数据呢?
    • 例如,您可以简单地写成 dfs['job1']。
    猜你喜欢
    • 2017-03-12
    • 2014-06-21
    • 2020-01-12
    • 2021-02-04
    • 1970-01-01
    • 2017-12-03
    • 2016-01-13
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多