首页 > 解决方案 > 如何将字典的键和值转换为数据框列?

问题描述

我有一个 Python 字典,我无法将字典的键和值转换为数据框列。

import pandas as pd
data={'form-0-publish': ['05/28/2019'], 'form-0-cell': ['81'], 'form-0-cell_name': ['13a'], 'form-0-jam': ['07.00-08.00'], 'form-0-target': ['60'],
      'form-1-publish': ['05/28/2019'], 'form-1-cell': ['81'], 'form-1-cell_name': ['13a'], 'form-1-jam': ['07.00-08.00'], 'form-1-target': ['60'],
      'form-2-publish': ['05/28/2019'], 'form-2-cell': ['81'], 'form-2-cell_name': ['13a'], 'form-2-jam': ['07.00-08.00'], 'form-2-target': ['60'],
      }
df = pd.DataFrame(data.items(), columns=['FormPublish', 'DatePublish', 'FormCell', 'Cell', 'FormCellName', 'FormCellName', 'FormJam', 'Jam', 'FormTarget', 'Target'])
df

预期结果:

> FormPublish      DatePublish FormCell Cell FormCellName FormCellName
> FormJam Jam FormTarget Target 0 form-0-publish ['05/28/2019'] ... 1
> form-0-publish ['05/28/2019'] ... 3 form-0-publish ['05/28/2019'] ...

标签: pythonpython-3.xpandasdictionaryjupyter-notebook

解决方案


我认为直接没有执行此类任务的功能,但我做了2个for循环来获得您的结果:-

data={'form-0-publish': ['05/28/2019'], 'form-0-cell': ['81'], 'form-0-cell_name': ['13a'], 'form-0-jam': ['07.00-08.00'], 'form-0-target': ['60'],
  'form-1-publish': ['05/28/2019'], 'form-1-cell': ['81'], 'form-1-cell_name': ['13a'], 'form-1-jam': ['07.00-08.00'], 'form-1-target': ['60'],
  'form-2-publish': ['05/28/2019'], 'form-2-cell': ['81'], 'form-2-cell_name': ['13a'], 'form-2-jam': ['07.00-08.00'], 'form-2-target': ['60'],
  }

my_list = []  #Getting all keys and values in a single list.
for key,value in data.items():
    my_list.append(key)
    my_list.append(*value)

new_list = []
extra_list = []
for index,var in enumerate(my_list):   # Making pairs of 10 elements from my_list.
    if index%10==0:
        new_list.append(extra_list)
        extra_list = [] 
        extra_list.append(var)
    else:      
        extra_list.append(var)
new_list.append(extra_list)
new_list.pop(0)
# Now we will use this new_list in DataFrame

df = pd.DataFrame(new_list, columns=['FormPublish', 'DatePublish', 'FormCell', 'Cell', 'FormCellName', 'FormCellName', 'FormJam', 'Jam', 'FormTarget', 'Target'])
df

输出

    FormPublish DatePublish FormCell    Cell    FormCellName    FormCellName    FormJam Jam FormTarget  Target
   0    form-0-publish  05/28/2019  form-0-cell 81  form-0-cell_name    13a form-0-jam  07.00-08.00 form-0-target   60
   1    form-1-publish  05/28/2019  form-1-cell 81  form-1-cell_name    13a form-1-jam  07.00-08.00 form-1-target   60
   2    form-2-publish  05/28/2019  form-2-cell 81  form-2-cell_name    13a form-2-jam  07.00-08.00 form-2-target   60

我希望它可以帮助你。​</p>


推荐阅读