gpt4 book ai didi

python - 使用带有 np.array 值的字典列表创建 DataFrame

转载 作者:行者123 更新时间:2023-12-01 04:34:18 25 4
gpt4 key购买 nike

我有一个字典列表,其中的值作为 numpy 数组返回(通常为空)。

data=[{'width': array([])},
{'width': array([])},
{'width': array([])},
{'width': array([])},
{'width': array([])},
{'width': array([ 0.64848222])},
{'width': array([ 0.62241745])},
{'width': array([ 0.76892571])},
{'width': array([ 0.69913647])},
{'width': array([ 0.7506934])},
{'width': array([ 0.69087949])},
{'width': array([ 0.65302866])},
{'width': array([ 0.67267989])},
{'width': array([ 0.63862089])}]

我想创建一个 DataFame,其值是 float 而不是 numpy 数组数据类型。我还想将空数组转换为 NaN 值。

我尝试使用 df=pd.DataFrame(data, dtype=float) ,它返回一个 DataFame,其值为 np.arrays,如下所示:

               width
0 []
1 []
2 []
3 []
4 []
5 [0.648482224582]
6 [0.622417447245]
7 [0.768925710479]
8 [0.699136467373]
9 [0.75069339816]
10 [0.690879488242]
11 [0.653028655088]
12 [0.672679885077]
13 [0.638620890633]

我还尝试使用 df.values.astype(float) 创建 df 后重新转换它的值,但出现以下错误:ValueError:使用序列设置数组元素。

我试图为 DataFame 获取的最终输出如下所示:

               width
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 0.648482224582
6 0.622417447245
7 0.768925710479
8 0.699136467373
9 0.75069339816
10 0.690879488242
11 0.653028655088
12 0.672679885077
13 0.638620890633

最佳答案

data 构造 DataFrame 后,您需要做的唯一额外的事情是:

df.width = df.width.str[0]

这是可行的,因为我们只是使用 .str 访问器来获取每个列表的第一个元素。空列表没有第一个元素,因此这些行返回 NaN

您最终会得到一列 float64 值:

       width
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 0.648482
6 0.622417
7 0.768926
8 0.699136
9 0.750693
10 0.690879
11 0.653029
12 0.672680
13 0.638621

注意:如果要显示更多小数位,则需要使用 pd.set_options 调整浮点精度。

或者,您可以在构建 DataFrame 之前处理列表:

pd.DataFrame([x.get('width') for x in data], columns=['width'])

关于python - 使用带有 np.array 值的字典列表创建 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com