次の問題があります。整数の列名と期間インデックスを使用して DataFrame を構築しました。ここで、次の関数を使用して列の名前を変更すると:
df.rename(columns = lambda x: str(x), inplace=True)
したがって、列の型を文字列に変換すると、次の奇妙な動作が見られます。操作の前に、フレームから 1 つの列を取得すると、シリーズが取得されます。今、いくつかの列で DataFrame を取得します: 以前df.loc[:,1]
は Series を与えました:
これで、df.loc[:,'1']
長さ 0 の PeriodIndex と df の完全な元の列を持つ DataFrame が得られます。
私が何か間違ったことをしているのか、それともバグに遭遇したのか、誰にも分かりますか?
バグ (?) を再現するコード スニペットを次に示します。
A = pd.DataFrame(dict(zip(range(0,9000), [pd.Series([1,2,3], [pd.Period(1), pd.Period(2), pd.Period(3)]) for x in range(0,9000)])))
A[5000]
A.rename(columns = lambda x: str(x), inplace=True)
A['5000'] # This should return a DataFrame with a zero-PeriodIndex and the full columns!
事前にどうもありがとうございました。