使用数据框中的多索引值创建哈希

Create an hash using multi-index values in dataframe

假设我们有以下数据框:

>> df = pd.DataFrame(
columns = ['Film', 'Rating', 'Name'],
 data=[['Alien', 9, 'Jane'], ['Alien', 7, 'Mark'],
 ['LOTR', 8, 'Jack'], ['LOTR', 6, 'John']])

>> df.set_index(['Film', 'Rating'])
              Name
Film  Rating      
Alien 9       Jane
      7       Mark
LOTR  8       Jack
      6       John

我想使用多索引值创建一个散列列,如下所示:

              Name     hash
Film  Rating               
Alien 9       Jane  Alien/9
      7       Mark  Alien/7
LOTR  8       Jack   LOTR/8
      6       John   LOTR/6

试过这个:

df['hash'] = df.apply(lambda x: '/'.join(x.index), axis = 1)

x.index 指的是数据帧索引,而不是第一行,所以我实际上被卡住了。此外,我不确定是否可以连接 intstr 值。

编辑:更清楚地说,我需要一些即使我有更长的多索引(3+ 列)并且里面有 int 类型也能工作的东西。

尝试:

df["hash"] = (
    df.index.get_level_values(level=0)
    + "/"
    + df.index.get_level_values(level=1)
)
print(df)

打印:

              Name     hash
Film  Rating               
Alien 9       Jane  Alien/9
      7       Mark  Alien/7
LOTR  8       Jack   LOTR/8
      6       John   LOTR/6

或者:

df["hash"] = df.index.map("/".join)
print(df)