Pandas:从不同长度的字典创建 dataframe


您可以使用以下基本语法从条目具有不同长度的字典创建 pandas DataFrame:

 import pandas as pd

df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

此语法将字典数组列表转换为 pandas 系列列表。

这允许我们创建一个 pandas DataFrame 并简单地填充 NaN 值,以确保生成的 DataFrame 中的每一列长度相同。

以下示例展示了如何在实践中使用此语法。

示例:从不同长度的字典创建 Pandas DataFrame

假设我们有以下包含不同长度条目的字典:

 #create dictionary whose entries have different lengths
some_dict = dict(A=[2, 5, 5, 7, 8], B=[9, 3], C=[4, 4, 2])

#view dictionary
print (some_dict)

{'A': [2, 5, 5, 7, 8], 'B': [9, 3], 'C': [4, 4, 2]}

如果我们尝试使用from_dict()函数将此字典转换为 pandas DataFrame,我们将收到错误:

 import pandas as pd

#attempt to create pandas DataFrame from dictionary
df = pd. DataFrame . from_dict (some_dict)

ValueError : All arrays must be of the same length

我们收到一条错误消息,告诉我们字典中的所有数组必须具有相同的长度。

为了解决这个错误,我们可以使用以下语法将 Dictionary 转换为 DataFrame:

 import pandas as pd

#create pandas DataFrame from dictionary
df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

#view DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 NaN 2.0
3 7 NaN NaN
4 8 NaN NaN

请注意,我们能够成功创建一个 pandas DataFrame,并且填充 NaN 值以确保每列的长度相同。

如果你想用其他值(比如零)替换这些NaN值,可以使用replace()函数,如下所示:

 #replace all NaNs with zeros
df. replace (np. nan , 0, inplace= True )

#view updated DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 0.0 2.0
3 7 0.0 0.0
4 8 0.0 0.0

请注意,每个 NaN 值均已替换为零。

随意使用replace()函数将NaN值替换为您想要的任何值。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

Pandas:如何将 DataFrame 转换为字典
Pandas:如何用字典重命名列
Pandas:如何使用字典填充 NaN 值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注