我想知道是否可以创建字典并将其转换为Pandas数据帧,其中每个字典键都有一个值数组,但是数组的长度会有所不同。
例如col3
仅具有2个值,所有其他列表具有3个值。我能以某种方式将NaN
填写到缺失值中而不会出错吗?
col1 = ["Bottom", "sss", "ddd"]
col2 = ["boo", "sss", "foo"]
col3 = [999, 89]
d = {"Type": col1, "Style": col2, "Profit": col3}
df = pd.DataFrame.from_dict(d)
答案 0 :(得分:1)
处理
df=pd.DataFrame([col1,col2,col3],index=['T','S','P']).T
df
Out[165]:
T S P
0 Bottom boo 999
1 sss sss 89
2 ddd foo None
另一个选项
pd.Series(d).apply(pd.Series).T
Out[174]:
Type Style Profit
0 Bottom boo 999
1 sss sss 89
2 ddd foo NaN
答案 1 :(得分:1)
并非严格要求词典。使用itertools.zip_longest
:
from itertools import zip_longest
df = pd.DataFrame(list(zip_longest(col1, col2, col3)),
columns=['Type', 'Style', 'Profit'])
print(df)
Type Style Profit
0 Bottom boo 999.0
1 sss sss 89.0
2 ddd foo NaN
请注意,即使元组输入列表中的每个元组都包含混合类型,pd.DataFrame
构造函数也足够聪明,可以将数字序列转换为数值。
答案 2 :(得分:0)
好的-您可以用numpy.nan
填写缺失的值:
import numpy as np
col1 = ["Bottom", "sss", "ddd"]
col2 = ["boo", "sss", "foo"]
col3 = [999, 89, np.nan]
d = {"Type": col1, "Style": col2, "Profit": col3}
df = pd.DataFrame.from_dict(d)
输出
Profit Style Type
0 999.0 boo Bottom
1 89.0 sss sss
2 NaN foo ddd