如果我有一个数据帧 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]
最佳答案
您可以使用元组键并利用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
关于python - 子数据帧的子数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206916/