Tôi có một khung dữ liệu với một MultiIndex. Tôi tự hỏi liệu tôi đã tạo khung dữ liệu theo cách chính xác chưa (xem bên dưới).DataFrame với MultiIndex để dict
01.01 02.01 03.01 04.01
bar total1 40 52 18 11
total2 36 85 5 92
baz total1 23 39 45 70
total2 50 49 51 65
foo total1 23 97 17 97
total2 64 56 94 45
qux total1 13 73 38 4
total2 80 8 61 50
df.index.values
kết quả trong:
array([('bar', 'total1'), ('bar', 'total2'), ('baz', 'total1'),
('baz', 'total2'), ('foo', 'total1'), ('foo', 'total2'),
('qux', 'total1'), ('qux', 'total2')], dtype=object)
df.index.get_level_values
kết quả trong:
<bound method MultiIndex.get_level_values of MultiIndex(levels=[[u'bar', u'baz', u'foo', u'qux'], [u'total1', u'total2']],
labels=[[0, 0, 1, 1, 2, 2, 3, 3], [0, 1, 0, 1, 0, 1, 0, 1]],names=[]
Tôi cuối cùng tìm cách để chuyển đổi df vào một dict của bộ từ điển như vậy mà chính dict đầu tiên là một của ['bar', 'baz', 'foo', 'qux'] và các giá trị là các ngày và từ điển bên trong được tạo thành từ 'total1' và 'totals2' làm khóa và các giá trị là số nguyên của df. giải thích Alternative, là ví dụ nếu dict1 là dict sau đó gọi:
dict1['bar']
sẽ cho kết quả đầu ra:
{u'bar':{'01.01':{'total1':40,'total2':36},'02.01':{'total1':52,'total2':85},'03.01':{'total1':18,'total2':5},'04.01':{'total1':11,'total2':92} } }
Làm thế nào và những gì tôi sẽ cần phải thay đổi để đạt được điều này? Đây có phải là vấn đề lập chỉ mục không? Tôi tương đối mới với gấu trúc và từ điển vì vậy tôi hy vọng bạn có thể trần với tôi.
Bạn hãy thử 'df.to_dict() '? – albert
@albert yes và 'df.to_dict()' kết quả bằng: '{'01 .01 ': {(' bar ',' total1 '): 40, (' bar ',' total2 '): 36, (' baz ') , 'total1'): 23, ('baz', 'total2'): 50, 'etc ..' df.to_dict ('index') 'kết quả bằng:' ('bar', 'total1'): {' 01.08 ': 40, '02 .08': 52, '03 .08 ': 18, '04 .08': 11}, ('bar', 'total2'): {'01 .08 ': 36, '02 .08': 85, '03 .08 ' : 5, '04 .08 ': 92} '. Vì vậy, nó được tôi gần nơi tôi muốn, đó là lý do tại sao tôi nghĩ rằng nó có thể là một vấn đề với sự hình thành của các khung dữ liệu. – OAK
Bạn có thể xem xét các tùy chọn/tham số được hỗ trợ cho 'df.to_csv()' vì chúng cho phép bạn thao tác theo cách dữ liệu được chuyển đổi: http://pandas.pydata.org/pandas-docs/stable/generated/ pandas.DataFrame.to_dict.html Tôi đề nghị 'df.to_csv ('index')' nhưng không thử nó. – albert