我有一个Pandas DataFrame,它是根据字典生成的(字典里面有一些字典)。
当我打印字典时,它给了我如下的例子:
当前数据表

不知何故,我需要将这些字典转换成将成为当月孩子的专栏(一月、二月等)。列。如下所示:
数据表,我需要

**更新-添加字典**
data={'2007': {'Jan': {'working_days': 23,'weekend': 4,'holydays': 4,'days': 31},'Feb': {'working_days': 20,'weekend': 6,'holydays': 2,'days': 28},'Mar': {'working_days': 20,'weekend': 6,'holydays': 2,'days': 28}},'2008': {'Jan': {'working_days': 23,'weekend': 4,'holydays': 4,'days': 31},'Feb': {'working_days': 20,'weekend': 6,'holydays': 2,'days': 28},'Mar': {'working_days': 20,'weekend': 6,'holydays': 2,'days': 28}},'2009': {'Jan': {'working_days': 23,'weekend': 4,'holydays': 4,'days': 31},'Feb': {'working_days': 20,'weekend': 6,'holydays': 2,'days': 28},'Mar': {'working_days': 20,'weekend': 6,'holydays': 2,'days': 28}}}
我该怎么做呢?
提前感谢!
发布于 2019-07-04 16:03:34
如果从dataframe开始,您可以创建一个具有所需结构的新结构,如下所示:
month_labels=['Jan', 'Fev']
attributes=['working_days', 'weekend']
new_cols= pd.MultiIndex.from_arrays([month_labels, attributes]).sort_values()
new_cols= pd.MultiIndex.from_product([month_labels, attributes], names=['Month', 'Attribute'])
#df_new=pd.DataFrame(columns=pd.MultiIndex.from_arrays([month_labels, attributes]), index=df.index)
df_new=pd.DataFrame(columns=new_cols, index=df.index)
for month in df.columns:
for attribute in attributes:
df_new[(month, attribute)]= df[month].map(lambda d: d[attribute])
df_new您只需完成month_labels和属性的列表。结果如下(根据虚构的数据->我的月份通常也有不到32天:-):
Month Jan Fev
Attribute working_days weekend working_days weekend
Year
2007 19 9 19 8
2008 22 10 20 8
2009 19 10 18 8
2010 20 10 18 8https://stackoverflow.com/questions/56890101
复制相似问题