簡體   English   中英

如何根據列值將pandas數據幀划分為更小的數據幀?

[英]How to divide a pandas dataframe into smaller dataframes, based on a column value?

在此輸入圖像描述

我希望基於'z'值將我的數據幀拆分為更小的dfs。 在這種情況下,2 dfs,因為我只想在零(z列)之間取得什么。 即Dataframe1:01/10/2018 0:30 - 1/10/2018 1:20 AND Dataframe2:01/10/2018 2:00 - 1/10/2018 2:40

如何在更大的數據集循環中完成此操作? 丟棄零,只介紹兩者之間的什么。

在這里,我有一個包含兩列和幾個樣本行的樣本數據集。 我已根據條件將此數據幀拆分為三個新數據幀(col2可被3整除,並根據其余值排列)。

from datetime import datetime, timedelta
import numpy as np
import pandas as pd

data = pd.DataFrame({'Col1':np.arange(datetime(2018,1,1),datetime(2018,1,12),timedelta(days=1)).astype(datetime),'Col2':np.arange(1,12,1)})
print('Data:')
print(data)

# split dataframe into three dataframes based on the col2 divisible by 3 
# col2 % 3 == 0 then data_0
# col2 % 3 == 1 then data_1
# col2 % 3 == 2 then data_2
data_0, data_1, data_2 = data[data['Col2']%3==0], data[data['Col2']%3==1],data[data['Col2']%3==2]
print('Data_0:')
print(data_0)
print('Data_1:')
print(data_1)
print('Data_2:')
print(data_2)

生成的輸出如下:

Data:
         Col1  Col2
0  2018-01-01     1
1  2018-01-02     2
2  2018-01-03     3
3  2018-01-04     4
4  2018-01-05     5
5  2018-01-06     6
6  2018-01-07     7
7  2018-01-08     8
8  2018-01-09     9
9  2018-01-10    10
10 2018-01-11    11
Data_0:
        Col1  Col2
2 2018-01-03     3
5 2018-01-06     6
8 2018-01-09     9
Data_1:
        Col1  Col2
0 2018-01-01     1
3 2018-01-04     4
6 2018-01-07     7
9 2018-01-10    10
Data_2:
         Col1  Col2
1  2018-01-02     2
4  2018-01-05     5
7  2018-01-08     8
10 2018-01-11    11

希望,這可能會對你有所幫助。

您可以使用groupby

grouped = df.groupby('z')    
dataframes = [grouped.get_group(x) for x in grouped.groups]#list of DataFrames

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM