7
Làm cách nào để thay đổi mọi phần tử trong một DataFrame bằng chỉ mục phân cấp? Ví dụ, có lẽ tôi muốn chuyển đổi chuỗi thành nổi:Thay đổi dữ liệu trong một khung dữ liệu với chỉ mục phân cấp
from pandas import DataFrame
f = DataFrame({'a': ['1,000','2,000','3,000'], 'b': ['2,000','3,000','4,000']})
f.columns = [['level1', 'level1'],['item1', 'item2']]
f
Out[152]:
level1
item1 item2
0 1,000 2,000
1 2,000 3,000
2 3,000 4,000
Tôi cố gắng này:
def clean(group):
group = group.map(lambda x: x.replace(',', ''))
return group
f.apply(clean)
Out[153]:
(level1, item1) (level1, item2)
0 1000 2000
1 2000 3000
2 3000 4000
Như bạn thấy, nó thay đổi việc lập chỉ mục thứ bậc khá một chút. Làm thế nào tôi có thể tránh điều này? Hoặc có thể có một cách tốt hơn.
Cảm ơn
vĩ đại. Có áp dụng vượt qua các cột bao gồm item1, item2 khi tôi sử dụng trục = 0? Điều gì xảy ra khi có một chỉ mục phân cấp trong các cột và các hàng? –
Uhm ... Tôi đã thử điều này và nó "làm phẳng" các cấp độ. Bạn có biết một sửa chữa cho điều này? –
@RobertSmith Bạn đang sử dụng phiên bản gấu trúc nào? Nó không flatten cho tôi trên '0.10' (mặc dù' applymap' hiện). –