python - 将数据帧分割成 block 并将它们添加到多重索引中

标签 python pandas

我有一个包含 77000 行的索引数据框。

我想将每 7000 行分组为一个更高维度的多重索引,形成 11 组更高维度的索引。

我知道我可以编写一个遍历所有索引的循环并创建一个元组并通过 dataframe.MultiIndex.from_tuples 方法分配它。

有没有一种优雅的方式来完成这个简单的事情?

最佳答案

您可以使用the pd.qcut function创建一个可以添加到索引的新列。

以下是创建五个组/ block 的示例:

df = pd.DataFrame({'data':range(1,10)})
df['chunk'] = pd.qcut(df.data, 5, labels=range(1,6))
df.set_index('chunk', append=True, inplace=True)
df
             data
index chunk      
0     1         1
1     1         2
2     2         3
3     2         4
4     3         5
5     4         6
6     4         7
7     5         8
8     5         9

您可以执行 df['chunk'] = pd.qcut(df.index, 11) 将 block 分配给数据帧。

关于python - 将数据帧分割成 block 并将它们添加到多重索引中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31749090/

相关文章:

pandas - 与示例 2 数据帧按行连接

python - numpy 溢出

python - 将值添加到同一字典中的键

python matplotlib - 等高线图 - 置信区间

python - 再次访问 "How to find the position/index of a particular file in a directory?"

python - 如何从 Python pandas 中包含字符串和 float 的不同 Dataframe 中划分两行。

python - 修改 `locals()` 或 `frame.f_locals` 中的*现有*变量

python - 二进制补码函数输出 -1 的错误结果

python-3.x - pandas df merge 避免重复的列名

python - Pandas 根据天数列复制 df 行