python - 子数据帧的子数据帧

标签 python python-3.x pandas dictionary dataframe

如果我有一个数据帧 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/

相关文章:

python - 在Python中反复求解Gurobi模型

python - 使用 pandas 保存的数据正在改变

python - Django:根据 URL 在 settings.py 中动态设置 SITE_ID?

python - 如何以滚动方式快速将 pandas 数据框中的多行转换为 1 行?

python - 使用 lambda 深复制索引整数

python - 如何在 seaborn 中将 groupby 绘制为百分比?

python - 夹层文件上传

python-3.x - 如何垂直交换数组?

python - 将列名从 int 转换为 pandas 中的字符串

python - 数据列值未更改为浮点型