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 值