子数据帧的子数据帧

2024-09-30 18:16:50 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个数据帧dfèI,我想根据“循环数”的唯一值将其拆分为子数据帧

我使用:

dfs = {k: df_i[df_i['Cycle Number'] == k] for k in df_i['Cycle Number'].unique()}

假设“循环数”从1到50,在每个循环中,我有从1到15的步骤,如何将每个数据帧拆分为15个进一步的数据帧

我想这种类型的东西会有用:

for i in range(1,51):
    dsfs = {k: dfs[i][dfs[i]['Step Number'] == k] for k in dfs[i]['Step Number'].unique()}

但是,这将仅从对应于50的循环数返回15个数据帧,而不是之前的数据帧

如果我想在第20个循环中访问步骤号为10的子数据帧,是否有一种生成子数据帧的方法,以便我可以使用dfs[20][10]之类的方法来访问它

简单的类比:

Step Number Cycle Number    Desired Access
1   1   dfs[1][1]
2   1   dfs[1][2]
3   1   dfs[1][3]
4   1   dfs[1][4]
5   1   dfs[1][5]
1   2   dfs[2][1]
2   2   dfs[2][2]
3   2   dfs[2][3]
4   2   dfs[2][4]
5   2   dfs[2][5]
1   3   dfs[3][1]
2   3   dfs[3][2]
3   3   dfs[3][3]
4   3   dfs[3][4]
5   3   dfs[3][5]
1   4   dfs[4][1]
2   4   dfs[4][2]
3   4   dfs[4][3]
4   4   dfs[4][4]
5   4   dfs[4][5]

Tags: 数据方法in类型numberdfforstep
1条回答
网友
1楼 · 发布于 2024-09-30 18:16:50

您可以改用元组键并使用groupby。下面是一个简单的例子:

df = pd.DataFrame([[0, 1, 2], [0, 1, 3], [1, 2, 4], [1, 2, 5], [1, 3, 6], [1, 3, 7]],
                  columns=['col1', 'col2', 'col3'])

dfs = dict(tuple(df.groupby(['col1', 'col2'])))

for k, v in dfs.items():
    print(k)
    print(v)

(0, 1)
   col1  col2  col3
0     0     1     2
1     0     1     3
(1, 2)
   col1  col2  col3
2     1     2     4
3     1     2     5
(1, 3)
   col1  col2  col3
4     1     3     6
5     1     3     7    

相关问题 更多 >