Nhờ @ bình luận cxrodgers, tôi nghĩ rằng cách nhanh nhất để làm điều này là:
df.index = df.index.set_levels(df.index.levels[0].str.replace(' ', ''), level=0)
Cũ, còn câu trả lời:
tôi thấy rằng danh sách hiểu được đề xuất bởi các công trình @Shovalt nhưng cảm thấy chậm trên máy của tôi (sử dụng một khung dữ liệu với> 10.000 hàng).
Thay vào đó, tôi đã có thể sử dụng phương thức .set_levels
, nhanh hơn một chút đối với tôi.
%timeit pd.MultiIndex.from_tuples([(x[0].replace(' ',''), x[1]) for x in df.index])
1 loop, best of 3: 394 ms per loop
%timeit df.index.set_levels(df.index.get_level_values(0).str.replace(' ',''), level=0)
10 loops, best of 3: 134 ms per loop
Thực tế, tôi chỉ cần thêm một số văn bản vào trước. Đây thậm chí còn nhanh hơn với .set_levels
:
%timeit pd.MultiIndex.from_tuples([('00'+x[0], x[1]) for x in df.index])
100 loops, best of 3: 5.18 ms per loop
%timeit df.index.set_levels('00'+df.index.get_level_values(0), level=0)
1000 loops, best of 3: 1.38 ms per loop
%timeit df.index.set_levels('00'+df.index.levels[0], level=0)
1000 loops, best of 3: 331 µs per loop
giải pháp này được dựa trên câu trả lời trong các liên kết từ những nhận xét của @denfromufa ...
python - Multiindex and timezone - Frozen list error - Stack Overflow
Không, chỉ là không thay đổi. Nếu bạn muốn thay đổi nó, bạn phải làm lại nó. – tnknepp
http://stackoverflow.com/a/26629643/2230844 – denfromufa