gpt4 book ai didi

python - 尝试从对象转换为整数时出现无效对象错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:21 25 4
gpt4 key购买 nike

我很清楚以前曾被问过类似性质的问题,但是在尝试了大多数传统方法之后,我完全不知所措。

我有一个包含多个变量的数据框,我从中选择了 5 个变量并将这些变量分组到一个公共(public)属性:“城市”。

我试图根据每个城市从属性“driver_count”中获取唯一值:

        city    driver_count    type    date    fare    ride_id
0 Kelseyland 63 Urban 2016-08-19 04:27:52 5.51 6246006544795
1 Kelseyland 63 Urban 2016-04-17 06:59:50 5.54 7466473222333
2 Kelseyland 63 Urban 2016-05-04 15:06:07 30.54 2140501382736
3 Kelseyland 63 Urban 2016-01-25 20:44:56 12.08 1896987891309
4 Kelseyland 63 Urban 2016-08-09 18:19:47 17.91 8784212854829
...

应该很简单吧?我只是按“城市”对数据帧进行分组,然后使用 pd.unique() 函数来导出我唯一的“driver_count”值。

pyber_df_drivers_unique=pyber_df_cities.groupby("city") # Pulls the unique value for the number of drivers in each City
U_pyber_df_drivers = pyber_df_drivers_unique["driver_count"].unique()

>>> city
Alvarezhaven [21]
Alyssaberg [67]
Anitamouth [16]
Antoniomouth [21]
Aprilchester [49]
...
Name: driver_count, dtype: object

这就是我的麻烦开始的地方:我正在创建一个新的数据框来对所有转换后的属性(其他变量的平均值、计数等)进行分组,以便我可以绘制数据。问题是,U_pyber_df_drivers 被归类为对象,而不是整数或数字类型(上面输出中的括号也可能表明了这一点)。

pd.to_numeric:

pd.to_numeric(U_pyber_df_drivers)
>>>
ERROR Invalid object type at position 0

#What's at position 0?
U_pyber_df_drivers[0]
>>>
array([21], dtype=int64)

我不明白这个错误。我尝试过其他方法,例如 df.astype(str)、df.convert_objects(convert_numeric=True)、df.infer_objects(),甚至 pd.factorize()...,但出现不同类型的错误或根本无法执行任何操作将我的变量从对象转换为数字类型(我本来打算详细列出所有这些,但考虑到这个错误是这一切的开始,我宁愿理解它,以避免将来把意大利面条扔到墙上)。

最佳答案

@cᴏʟᴅsᴘᴇᴇᴅ所示, .str[0] 函数从列表中提取第一项,并且授予我的数据帧只有一个元素,它可以从对象转换为整数(我猜测它分配的唯一原因整数作为类型是因为它推断了数组的类型)。

我认为另一个解决方案是在 pd.unique() 函数中传递 dtype 参数。如果没有传递参数,我认为发生的情况是 pd.unique() 会将每个数值分配为其自己的列表,每个数值都定义为对象类型,因此我们最终会得到一个嵌入列表中的列表(例如:[ [ 0 ], [ 1 ], [ .. ] ] 而不是预期的 [ 0, 1, ..] )。

关于python - 尝试从对象转换为整数时出现无效对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49500418/

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