df['e-mail'], df['date'] = zip(*map(process_index, df.index))
df = df.set_index(['e-mail', 'date'])
私の好みは、最初の列としてこれを読み込むことであろう(すなわち、おそらくこれはクリーナー行うことができます(マルチインデックスにこれを送り、その後
csv = '\n'.join(['[email protected]|2013-05-07 05:52:51 +0200, 42'] * 3)
df = pd.read_csv(StringIO(csv), header=None)
In [13]: df[0].str.split('|')
Out[13]:
0 [[email protected], 2013-05-07 05:52:51 +0200]
1 [[email protected], 2013-05-07 05:52:51 +0200]
2 [[email protected], 2013-05-07 05:52:51 +0200]
Name: 0, dtype: object
と):ないインデックスなど)、あなたはstrの分割方法を使用することができますか?
m = pd.MultiIndex.from_arrays(zip(*df[0].str.split('|')))
は0番目の列を削除します。そして新しいマルチインデックスにインデックスを設定します。pandas>=0.16.0
では、我々はインデックスに.str
アクセサを使用することができます
del df[0]
df.index = m
In [17]: df
Out[17]:
1
[email protected] 2013-05-07 05:52:51 +0200 42
2013-05-07 05:52:51 +0200 42
2013-05-07 05:52:51 +0200 42
これはとても役に立ちました。しかし、私が見る限り、set_index()を呼び出すと、デフォルトはinplace = Falseなので、inplace = Trueを使用するか、dfをそれ自身に戻す必要があります。 – Moot
@Mootありがとうございました。タイプミスかバック(4年前)のどちらかは、デフォルトでは「インプレース」でした。 –
素晴らしい!しかし、2つの場所がありました - コードの最初のスニペットを確認してください... – Moot