Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于工作日从现有数据帧拆分并创建新数据帧_Python_Pandas_Pandas Groupby_Data Science - Fatal编程技术网

Python 基于工作日从现有数据帧拆分并创建新数据帧

Python 基于工作日从现有数据帧拆分并创建新数据帧,python,pandas,pandas-groupby,data-science,Python,Pandas,Pandas Groupby,Data Science,我需要根据工作日拆分数据帧, 实际的数据帧如下所示 df = pd.DataFrame({'values': [10,5,30,44,52,6,7,85,9,1,1,1,13,14,1,16]}) df['weekdays'] = ['Monday','Tuesday','Wednesay','Thursday','Friday','saturday','sunday', 'Tuesday','Wednesay','Thursday','Friday','saturday','s

我需要根据工作日拆分数据帧,
实际的数据帧如下所示

df = pd.DataFrame({'values': [10,5,30,44,52,6,7,85,9,1,1,1,13,14,1,16]})
df['weekdays'] = ['Monday','Tuesday','Wednesay','Thursday','Friday','saturday','sunday',
        'Tuesday','Wednesay','Thursday','Friday','saturday','sunday',
      'Monday','Tuesday','Wednesday']


    values   weekdays
0       10     Monday
1        5    Tuesday
2       30   Wednesay
3       44   Thursday
4       52     Friday
5        6   saturday
6        7     sunday
7       85    Tuesday
8        9   Wednesay
9        1   Thursday
10       1     Friday
11       1   saturday
12      13     sunday
13      14     Monday
14       1    Tuesday
15      16  Wednesday
如何根据工作日拆分数据框,如下图所示?我尝试将数据框拆分为每行7行,但这会添加消费周的数据,因此如何不添加消费周的数据并拆分数据框,如下图所示?提前谢谢你的帮助

新_df_1

新_df_2

新_df_3


使用++创建一个grouper
grp
,然后使用此grouper对数据帧进行分组,并使用dict理解将每个分组的帧存储在字典中:

grp = df['weekdays'].shift().eq('sunday').cumsum()
dfs = {f'df{k+1}': g for k, g in df.groupby(grp)}
结果:

print(dfs['df1'])
   values  weekdays
0      10    Monday
1       5   Tuesday
2      30  Wednesay
3      44  Thursday
4      52    Friday
5       6  saturday
6       7    sunday

print(dfs['df2'])
    values  weekdays
7       85   Tuesday
8        9  Wednesay
9        1  Thursday
10       1    Friday
11       1  saturday
12      13    sunday

print(dfs['df3'])
    values   weekdays
13      14     Monday
14       1    Tuesday
15      16  Wednesday

使用++创建一个grouper
grp
,然后使用此grouper对数据帧进行分组,并使用dict理解将每个分组的帧存储在字典中:

grp = df['weekdays'].shift().eq('sunday').cumsum()
dfs = {f'df{k+1}': g for k, g in df.groupby(grp)}
结果:

print(dfs['df1'])
   values  weekdays
0      10    Monday
1       5   Tuesday
2      30  Wednesay
3      44  Thursday
4      52    Friday
5       6  saturday
6       7    sunday

print(dfs['df2'])
    values  weekdays
7       85   Tuesday
8        9  Wednesay
9        1  Thursday
10       1    Friday
11       1  saturday
12      13    sunday

print(dfs['df3'])
    values   weekdays
13      14     Monday
14       1    Tuesday
15      16  Wednesday