将 Python 字典转换为 Pandas DataFrame

编写一个 Python 程序,将字典转换为 Pandas DataFrame,并附带一个示例。有多种方法可以将字典转换为 pandas DataFrame,我们涵盖了所有这些方法。

在这个示例中,我们首先声明了一个员工字典,并使用了 pandas DataFrame 函数。在其中,我们访问了项目。其次,我们将字典项目转换为列表,然后将列表转换为 DataFrame。

import pandas as pd

empDict = {'name': 'Jhon Miller', 'Age': 32, 'Job': 'Developer'}

print(empDict)

df1 = pd.DataFrame(empDict.items())

print(df1)

df2 = pd.DataFrame(list(empDict.items()))

print(df2)

输出

{'name': 'Jhon Miller', 'Age': 32, 'Job': 'Developer'}
      0            1
0  name  Jhon Miller
1   Age           32
2   Job    Developer
      0            1
0  name  Jhon Miller
1   Age           32
2   Job    Developer

pandas DataFrame 具有列属性来为列分配名称,我们使用该列表分配多个列名。

empDict = {'Kiwi': 2000, 'Apple': 5000, 'Orange': 1500, 'Mango': 3500}

print(empDict)
print("=========")

df = pd.DataFrame(list(empDict.items()), columns = ['Col1', 'Col2'])

print(df)
print("=========")

df2 = pd.DataFrame(list(empDict.items()), columns = ['Fruits', 'Orders'])

print(df2)
Convert Dictionary to Pandas DataFrame

在 Python 中将字典转换为 Pandas DataFrame

尽管以上示例效果很好,但您无需做太多工作即可将字典转换为 DataFrame。from_dict() 函数可以转换字典,或者您也可以直接在 DF 函数中使用它。Coll 部分是它会自动分配列名。

empDict = {'name': ['Jhon', 'Mike', 'Dave', 'Kane', 'Rose'],
           'Age': [32, 37, 25, 29, 23]}

df1 = pd.DataFrame.from_dict(empDict)
print(df1)

print("== === == == == === == == == ")

df2 = pd.DataFrame(empDict)
print(df2)
   name  Age
0  Jhon   32
1  Mike   37
2  Dave   25
3  Kane   29
4  Rose   23
== === == == == === == == == 
   name  Age
0  Jhon   32
1  Mike   37
2  Dave   25
3  Kane   29
4  Rose   23

from_dict() 函数有一个 orient 属性,其默认值为 columns,用于从字典中分配列名。如果将 orient 更改为 index,则字典将透视或转置并传递给 df。

empDict = {'name': ['Jhon', 'Mike', 'Dave', 'Kane', 'Rose'],
           'Age': [32, 37, 25, 29, 23]}

df1 = pd.DataFrame.from_dict(empDict, orient = 'columns')
print(df1)

print("== == == == == ==")

df2 = pd.DataFrame.from_dict(empDict, orient = 'index')
print(df2)

print("== == == == == ==")

df3 = pd.DataFrame.from_dict(empDict, orient = 'index',
                             columns = ['a', 'b', 'c', 'd', 'e'])

print(df3)
   name  Age
0  Jhon   32
1  Mike   37
2  Dave   25
3  Kane   29
4  Rose   23
== == == == == ==
         0     1     2     3     4
name  Jhon  Mike  Dave  Kane  Rose
Age     32    37    25    29    23
== == == == == ==
         a     b     c     d     e
name  Jhon  Mike  Dave  Kane  Rose
Age     32    37    25    29    23

此 Python 编程语言示例展示了将嵌套字典转换为 pandas DataFrame 的多种方法。

empDict = [{'name': 'Jhon', 'Age': 32, 'Job': 'Developer'},
           {'name': 'Dave', 'Age': 29, 'Job': 'Designer'},
           {'name': 'Rose', 'Age': 23, 'Job': 'HR'},
           {'name': 'Mike', 'Age': 41, 'Job': 'Manager'},
           {'name': 'Kane', 'Age': 37, 'Job': 'Admin'} ]

df1 = pd.DataFrame.from_dict(empDict)
print(df1)

print("== == == === == == ==")

df2 = pd.DataFrame(empDict)
print(df2)
   name  Age        Job
0  Jhon   32  Developer
1  Dave   29   Designer
2  Rose   23         HR
3  Mike   41    Manager
4  Kane   37      Admin
== == == === == == ==
   name  Age        Job
0  Jhon   32  Developer
1  Dave   29   Designer
2  Rose   23         HR
3  Mike   41    Manager
4  Kane   37      Admin

我们可以使用 columns 参数根据我们的要求删除或重新排序字典列。首先,我们重新排序 Age 和 Job 列。接下来,删除 age 列并添加 Sx 列。这就是为什么它返回带有 NaN 行的 Sx 列的原因。

import pandas as pd

empDict = [{'name': 'Jhon', 'Age': 32, 'Job': 'Developer'},
           {'name': 'Dave', 'Age': 29, 'Job': 'Designer'},
           {'name': 'Rose', 'Age': 23, 'Job': 'HR'},
           {'name': 'Mike', 'Age': 41, 'Job': 'Manager'},
           {'name': 'Kane', 'Age': 37, 'Job': 'Admin'} ]

df1 = pd.DataFrame(empDict, columns = ['name', 'Job', 'Age'])
print(df1)
print("== == == === == == ==")

df2 = pd.DataFrame(empDict, columns = ['name', 'Job'])
print(df2)
print("== == == === == == ==")

df3 = pd.DataFrame(empDict, columns = ['name', 'Job', 'Age', 'Sx'])
print(df3)
   name        Job  Age
0  Jhon  Developer   32
1  Dave   Designer   29
2  Rose         HR   23
3  Mike    Manager   41
4  Kane      Admin   37
== == == === == == ==
   name        Job
0  Jhon  Developer
1  Dave   Designer
2  Rose         HR
3  Mike    Manager
4  Kane      Admin
== == == === == == ==
   name        Job  Age  Sx
0  Jhon  Developer   32  NaN
1  Dave   Designer   29  NaN
2  Rose         HR   23  NaN
3  Mike    Manager   41  NaN
4  Kane      Admin   37  NaN

这是您可能会看到的字典的实时场景。在这里,我们展示了转换这些类型字典的多种方法。我建议您再尝试一个嵌套的。

empDict = {'Employee': {'Q1': 'Jhon', 'Q2': 'Dave', 'Q3': 'Mike', 'Q4': 'Rose'},
           '2018':{'Q1': 1200, 'Q2': 1000, 'Q3': 2500, 'Q4': 600},
           '2019':{'Q1': 2500, 'Q2': 3200, 'Q3': 1800, 'Q4': 4500},
           '2020':{'Q1': 1700, 'Q2': 3200, 'Q3': 5000, 'Q4': 8000}
           }

df1 = pd.DataFrame(empDict)
print(df1)
print("== == == === == == ==")

df2 = pd.DataFrame.from_dict(empDict)
print(df2)
   Employee  2018  2019  2020
Q1     Jhon  1200  2500  1700
Q2     Dave  1000  3200  3200
Q3     Mike  2500  1800  5000
Q4     Rose   600  4500  8000
== == == === == == ==
   Employee  2018  2019  2020
Q1     Jhon  1200  2500  1700
Q2     Dave  1000  3200  3200
Q3     Mike  2500  1800  5000
Q4     Rose   600  4500  8000

这是另一个例子。

empDict = {'Employee': {2018: 'Jhon', 2019: 'Dave', 2020: 'Mike'},
           'Q1':{2018: 1200, 2019: 1000, 2020: 2500},
           'Q2':{2018: 2500, 2019: 3200, 2020: 1800},
           'Q3':{2018: 1700, 2019: 3200, 2020: 5000},
           'Q4':{2018: 1600, 2019: 4500, 2020: 8000}
           }

df1 = pd.DataFrame(empDict)
print(df1)

print("== == == === == == ==")

df2 = pd.DataFrame.from_dict(empDict)
print(df2)
     Employee    Q1    Q2    Q3    Q4
2018     Jhon  1200  2500  1700  1600
2019     Dave  1000  3200  3200  4500
2020     Mike  2500  1800  5000  8000
== == == === == == ==
     Employee    Q1    Q2    Q3    Q4
2018     Jhon  1200  2500  1700  1600
2019     Dave  1000  3200  3200  4500
2020     Mike  2500  1800  5000  8000