将一个大数据框拆分为多个数据框

时间:2019-11-21 09:44:08

标签: python pandas split

我有一份发电厂的清单,我将它们分成for循环并进行类似这样的处理。

list_of_pp = [v for k, v in pp_data.groupby('filename')]
        dataframes = pd.DataFrame()
        for pp in list_of_pp:
            pp = pp.groupby(['Date', 'filename']).sum().reset_index().set_index('Date').reindex(YF_date_range)
            pp['filename'] = pp['filename'].replace('', np.nan).ffill().bfill()
            pp.fillna(0, inplace = True)
            dataframes = dataframes.append(pp)


Output:

Date                filename     teklifId    fiyat miktar       SST      SAT
2019-11-10 00:00:00  bergama    205379348   620,68  -3,4    1055,15        0
2019-11-10 01:00:00  bergama    205385090   622,18  -2,9    902,161        0
2019-11-10 02:00:00  bergama    205392261   622,24  -0,8    248,896        0
2019-11-10 03:00:00  bergama    205398901   559,78  -0,6    307,879   -139,9
2019-11-10 04:00:00  bergama    205407003   559,98  -1,9    615,978   -83,99
2019-11-10 05:00:00  bergama    205414086   620,38  -2,8    1147,70   -279,1
2019-11-10 06:00:00  bergama    205420617   630,24  -2,9    913,848        0
2019-11-10 07:00:00  bergama    205426123   623,28  -2,6    1184,23   -373,9
2019-11-10 08:00:00  bergama    205432679   397,98    -4     795,96        0
2019-11-10 09:00:00  bergama    205440561      336 -10,3     1730,4        0
2019-11-10 10:00:00  bergama    205450946      400 -10,9       2180        0
2019-11-10 11:00:00  bergama    205460808      350  -3,5     1242,5     -630
2019-11-10 12:00:00  bergama    205468765   335,98  -2,5    587,965  -167,99
2019-11-10 13:00:00  bergama    205476320   335,98    -1    419,975  -251,98
2019-11-10 14:00:00  bergama    205482691   396,92  -1,2    238,152        0
2019-11-10 15:00:00  bergama    205488983      336   2,7          0     -453
2019-11-10 16:00:00  bergama    205495848    592,3     6          0    -1776
2019-11-10 17:00:00  bergama    205503077    623,9   5,6     218,36    -1965
2019-11-10 18:00:00  bergama    205511694    653,8     5     424,97    -2059
2019-11-10 19:00:00  bergama    205520491    656,9   1,3     164,22   -591,2
2019-11-10 20:00:00  bergama    205531685   650,98  -0,1     585,88   -553,3
2019-11-10 21:00:00  bergama    205545909    643,5  -1,1     804,37   -450,4
2019-11-10 22:00:00  bergama    205557633    638,2     4          0    -1276
2019-11-10 23:00:00  bergama    205567413    622,9   0,3     685,25   -778,7
2019-11-10 00:00:00  irmak      102689118    310,3    -1     310,34        0
2019-11-10 01:00:00  irmak              0        0     0          0        0
2019-11-10 02:00:00  irmak              0        0     0          0        0
2019-11-10 03:00:00  irmak      102699101   279,89  -0,6          1        0
                                      .
                                      .
                                      .
2019-11-10 23:00:00 tekirdag    302699101        0     0          0        0

每个文件名代表一个发电厂,每个发电厂数据具有相同的索引(“ 2019-11-10 00:00:00”至“ 2019-11-10 23:00:00”),但它们组合在一起底部。这个数据帧中有将近50个电厂,我想用文件名来拆分它们。我想访问这些数据框。

例如: 当我打印'bergama'时,我只想看到一个包含bergama信息的数据框。

由于在for循环中创建了这个大数据框,因此我无法为小数据框分配名称,因此无法在for循环后调用。因此,我不得不合并这些数据。我认为在这种情况下,将其分开可能更有可能。

我该怎么做才能拆分此数据框并为其指定名称?

2 个答案:

答案 0 :(得分:0)

据我了解,您将电厂的所有记录都记录在一个数据框中,现在您想按功能文件名中的单个名称来访问它们。

您可以访问singel电厂的那些列,例如简单地说:

    var MyObj = Resources.Load("wolf") as GameObject;
    GameObject.Instantiate(MyObj);

另外,这个问题已经多次提出。有人可以举报它吗?

答案 1 :(得分:0)

  1. 从文件名列中获取唯一值,然后存储在列表或集中。 (dataframe.filename.unique) 2.传递列表中的每个值或将其设置为单独的文件。

另一个观察结果:

(0-23->贝尔加马,24-48-irkmax等) 1.使用索引获取每个动力装置的单独文件。(使用for循环,步骤= 23,intial = 0,final = 50 * 23)