我开始用这样的字典:
dict = {(100000550L, u'ActivityA'): {'bar__sum': 14.0, 'foo__sum': 12.0},
(100001799L, u'ActivityB'): {'bar__sum': 7.0, 'foo__sum': 3.0}}
当转换为DataFrame时,将列标题(id,activitytype)作为列标题放入:
df = DataFrame(dict).transpose()
bar__sum foo__sum
(100000550, ActivityA) 14 12
(100001799, ActivityB) 7 3
如何将索引中的元组转换为MultiIndex?即,最终结果看起来像这样:
bar__sum foo__sum
id act_type
100000550 ActivityA 14 12
100001799 ActivityB 7 3
最好的方法是什么?我缺少DataFrame创建的一些选项吗?或者它应该通过列表理解发生,这对我来说效率低下。
如果你想 转换索引 你的数据帧:
>>> df.index = pd.MultiIndex.from_tuples(df.index)
>>> df
bar__sum foo__sum
100000550 ActivityA 14 12
100001799 ActivityB 7 3
>>> df.index.names = ['id', 'act_type']
>>> df
bar__sum foo__sum
id act_type
100000550 ActivityA 14 12
100001799 ActivityB 7 3
您还可以创建DataFrame 直接来自字典 (d
是你的dict,不要调用你的变量 dict
因为它将影子标准python字典):
>>> pd.DataFrame(d.values(), index=pd.MultiIndex.from_tuples(d.keys(), names=['id', 'act_type']))
bar__sum foo__sum
id act_type
100001799 ActivityB 7 3
100000550 ActivityA 14 12
注意 values()
和 keys()
是 总是以相同的顺序所以不用担心。
如果你想 转换索引 你的数据帧:
>>> df.index = pd.MultiIndex.from_tuples(df.index)
>>> df
bar__sum foo__sum
100000550 ActivityA 14 12
100001799 ActivityB 7 3
>>> df.index.names = ['id', 'act_type']
>>> df
bar__sum foo__sum
id act_type
100000550 ActivityA 14 12
100001799 ActivityB 7 3
您还可以创建DataFrame 直接来自字典 (d
是你的dict,不要调用你的变量 dict
因为它将影子标准python字典):
>>> pd.DataFrame(d.values(), index=pd.MultiIndex.from_tuples(d.keys(), names=['id', 'act_type']))
bar__sum foo__sum
id act_type
100001799 ActivityB 7 3
100000550 ActivityA 14 12
注意 values()
和 keys()
是 总是以相同的顺序所以不用担心。