Python 对象在数据帧中浮动
我有这样一个数据帧:Python 对象在数据帧中浮动,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个数据帧: 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,
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…..有什么解决方案吗
最后,我想得到相关矩阵。但是有了object,我就不能在包含object类型数据的列中使用df_encoded.corr()。制作热图需要这个相关矩阵。你需要实现什么 如果您明确知道只有一行包含一个列表,并且该列表中的对象需要是浮动的,那么您可能需要迭代每一行。如果您有一个巨大的数据集,即数百万行,那么您可能需要重新思考您试图实现的目标 要简单地转换行,您需要使用
.apply
,它迭代数据帧中的每一行,并允许您对该行执行操作,在本例中,更改该行中的类型。使用numpy.array
可能是一个捷径
import numpy as np
df_encoded['Q31'] = df_encoded.apply(
lambda x: np.array(x['Q31']).astype(float),
axis=1
)
谢谢你,埃里克。在这段代码中,我收到了以下错误:ValueError:(“使用序列设置数组元素”。“在索引Q31处发生”)我需要在有列表的列中将数据类型从object更改为int。之后,我想从我的数据中绘制一个热图,你们可能在错误的轴上迭代,也可能在整个数据集上迭代。我将把代码修改为df_encoded.apply(lambda x:np.array(x['Q31']).astype(float),axis=1)使用此代码,将不会出现错误,我收到了:0[1.0,5.0,9.0,10.0]11.02[1.0,5.0,9.0]3[4.0,5.0,8.0,9.0]但是当我检查数据类型时,它仍然是object,它是一个浮点数组,因此它将是object,而不是float,因此我无法将它们转换为int64,也无法从中获取热图。图雷