微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用NA值填充字典以允许转换为pandas数据框

如何解决用NA值填充字典以允许转换为pandas数据框

另一种选择是与一起使用from_dictorient='index'然后进行转置:

my_dict = {'a' : [1, 2, 3, 4, 5], 'b': [1, 2, 3]}
df = pd.DataFrame.from_dict(my_dict, orient='index').T

请注意,dtype如果您的列具有不同的类型(例如,一列中的浮点数,另一列中的字符串),则可能会遇到问题。

结果输出

     a    b
0  1.0  1.0
1  2.0  2.0
2  3.0  3.0
3  4.0  NaN
4  5.0  NaN

解决方法

我有一个字典,其中包含不同时滞的计算值,这意味着它们在不同的日期开始。例如,我拥有的数据可能如下所示:

Date      col1    col2    col3    col4    col5
01-01-15  5       12      1      -15      10
01-02-15  7       0       9       11      7
01-03-15          6       1       2       18
01-04-15          9       8       10
01-05-15         -4               7
01-06-15         -11             -1
01-07-15          6

其中每个标头是键,值的每一列是每个键的值(我defaultdict(list)为此使用a
)。当我尝试运行时,pd.DataFrame.from_dict(d)我可以理解地得到一个错误,指出所有数组的长度必须相同。是否有一种简单/简单的方法来填充或填充数字,以使输出最终成为以下数据帧?

Date      col1    col2    col3    col4    col5
01-01-15  5       12      1      -15      10
01-02-15  7       0       9       11      7
01-03-15  NaN     6       1       2       18
01-04-15  NaN     9       8       10      NaN
01-05-15  NaN    -4       NaN     7       NaN
01-06-15  NaN    -11      NaN    -1       NaN
01-07-15  NaN     6       NaN     NaN     NaN

还是我必须手动对每个列表执行此操作?

这是重新创建字典的代码:

import pandas as pd
from collections import defaultdict

d = defaultdict(list)
d["Date"].extend([
    "01-01-15","01-02-15","01-03-15","01-04-15","01-05-15","01-06-15","01-07-15"
]
d["col1"].extend([5,7])
d["col2"].extend([12,6,9,-4,-11,6])
d["col3"].extend([1,1,8])
d["col4"].extend([-15,11,2,10,7,-1])
d["col5"].extend([10,18])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。