DataFrame ができたら
import pandas as pd
df = pd.read_csv("input.csv", index_col=0) # or from another source
および各インデックスをタプルにマッピングする関数(以下は、この質問の例です)
def process_index(k):
return tuple(k.split("|"))
次の方法で階層インデックスを作成できます。
df.index = pd.MultiIndex.from_tuples([process_index(k) for k,v in df.iterrows()])
もう 1 つの方法は、2 つの列を作成し、それらをインデックスとして設定することです (元のインデックスは削除されます)。
df['e-mail'] = [x.split("|")[0] for x in df.index]
df['date'] = [x.split("|")[1] for x in df.index]
df = df.set_index(['e-mail', 'date'])
またはさらに短い
df['e-mail'], df['date'] = zip(*map(process_index, df.index))
df = df.set_index(['e-mail', 'date'])