关于为Pandas DataFrames编制索引似乎还有很多其他问题,但是我还没有找到一种实现所需类型更改的方法。如果我有一个看起来像的DF

                Value
 Index1 Index2
 0      1       1.1
 1      2       1.2
 2      3       2.4
 3      1       1.3
 4      2       2.2
 5      3       3.1


我不需要index1的所有内容都是唯一的。我宁愿有类似

                Value
 Index1 Index2
 0      1       1.1
 0      2       1.2
 0      3       2.4
 1      1       1.3
 1      2       2.2
 1      3       3.1


有没有办法做到这一点?我认为最简单的方法是应用将index1值除以3的函数,但不确定如何将函数应用于索引。也许熊猫虽然拥有自己的方法来重新定义索引值以具有这样的分组,但是当您同时考虑这两个索引时,它们仍然是唯一的?

最佳答案

import io
import pandas as pd
text = '''\
 Index1 Index2 Value
 0      1       1.1
 1      2       1.2
 2      3       2.4
 3      1       1.3
 4      2       2.2
 5      3       3.1'''

df = pd.read_table(io.BytesIO(text), sep='\s+', index_col=[0, 1])
df.index = pd.MultiIndex.from_tuples(
    [(item[0] // 3, item[1]) for item in df.index],
    names=df.index.names)
print(df)


产量

               Value
Index1 Index2
0      1         1.1
       2         1.2
       3         2.4
1      1         1.3
       2         2.2
       3         3.1

10-08 13:54