python - pandas 数据框中的 OBJECT to FLOAT
问题描述
我有一个这样的数据框:
df_encoded.head()
Time Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 ... Q31 Q33 Q36 Q38 Q42 Q44 Q45 Q47 Q49 Q50
0 3746 0 3 56 3 1 7 7 0 4152 ... [1, 5, 9, 10] [6, 2, 0, 1, 3] [1, 11] 19 0 5 5 [54, 55, 97] [11, 8, 10] 8
1 3778 1 1 21 3 8 4 7 0 8541 ... 1 11 [10, 0, 13, 1] [9, 2] 1 [0, 1] [0, 5] 39 9 [8, 4]
2 4261 1 4 8 1 7 11 0 2 870 ... [1, 5, 9] 3 1 13 3 4 4 91 [18, 19, 5, 2, 1, 0, 7, 19, 5, 3, 7, 17, 6, 4,... [7, 1]
3 1180 1 0 21 3 7 11 16 0 4103 ... [4, 5, 8, 9] [2, 0, 1, 5, 10] [10, 4, 11] [19, 20, 9, 11] [5, 0] 4 [0, 4, 6] 54 [16, 12, 11, 9] 4
4 3823 1 3 19 3 2 17 15 7 3251 ... [5, 8, 9, 10] [2, 0, 1, 7, 1, 5, 4] 10 13 5 4 [4, 6] [54, 47, 97, 98] [19, 5, 2, 1, 0, 7, 12, 11, 8, 10] [8, 0]
所有列中的数据类型都是对象。我可以轻松地将类型从 OBJECT 更改为 int 或 float 对于它们不是其中的任何列表的列。但是正如您通过数据框看到的那样,有些列中有列表,我无法将它们的类型从 OBJECT 更改为 Float .....有什么解决方案吗?
最后,我想要相关矩阵。但是有了对象,我不能在具有对象类型数据的列中使用 df_encoded.corr() 。制作热图需要此相关矩阵。
解决方案
你需要达到什么目标?
如果你确定你只能通过包含一个列表的行来解决你的问题,并且该列表中的对象需要是浮动的,那么你可能需要遍历每一行。如果您有一个庞大的数据集,即数百万行,那么您可能需要重新考虑您想要实现的目标。
要简单地转换您需要使用的行.apply
,它会遍历 pandas 数据框中的每一行,并允许您对该行执行操作,在这种情况下更改该行中的类型。一个快速的胜利可能是使用numpy.array
.
import numpy as np
df_encoded['Q31'] = df_encoded.apply(
lambda x: np.array(x['Q31']).astype(float),
axis=1
)
推荐阅读
- python - 我未能训练 CNN + LSTM 模型。我怎么解决这个问题?数据集有问题吗?或模型?(Python 3.8x)
- python - 当任务已经注册时,如何修复未注册的芹菜任务?
- node.js - ngrok:DJango 和 nodejs:如何添加多个端口
- docker - Dockerfile 运行 Python Pipenv 构建失败
- python - 在 pil 中调整图像大小以在 tkinter gui 中使用它时如何解决此错误?
- tensorflow - Tensorflow 2.4.1 中的 BatchNormalization 层提供恒定的验证精度
- python - Python:以功能方式从字典中删除项目
- python-3.x - 什么时候应该将 Age 列转换为 float 或 int?
- tree - 如何以 O(n) 时间复杂度将树转换为 SML 中的列表?
- google-chrome - 在 chrome 中打开时出现 Live Server (vscode) 错误