经过一些转换后,我的数据框似乎是非数字的(请参阅上一篇关于删除重复项的帖子:删除重复的熊猫数据框)
当我在 statsmodels 回归中使用它时,我收到此错误:
ValueError:Pandas 数据转换为对象的 numpy dtype。使用 np.asarray(data) 检查输入数据。
我可以以某种方式将整个数据帧转换回数字吗?
由于某种原因,将数据框与 sklearn 一起使用
我实际上不确定数据类型是什么,只有在 spyder 中打开数据框后,我才注意到它不再是 colered 。当我使用 type(df) 时,它只是告诉我它是一个数据框。
这是我提到的发生转换的帖子中的一个示例(比较最后一行之前和之后的 df):
dict1 = [{'var0': 0, 'var1': 0, 'var2': 2},
{'var0': 0, 'var1': 0, 'var2': 4},
{'var0': 0, 'var1': 0, 'var2': 8},
{'var0':0, 'var1': 0, 'var2': 12},]
df = pd.DataFrame(dict1, index=['s1', 's2','s1','s2'])
df.reset_index().T.drop_duplicates().T.set_index('index')
这是运行最后一行之前的数据帧:
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 4 entries, s1 to s2
Data columns (total 3 columns):
var0 4 non-null int64
var1 4 non-null int64
var2 4 non-null int64
dtypes: int64(3)
这是之后:
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 4 entries, s1 to s2
Data columns (total 2 columns):
var0 4 non-null object
var2 4 non-null object
dtypes: object(2)
memory usage: 96.0+ bytes
改造后:
print(df)
var0 var2
index
s1 0 2
s2 0 4
s1 0 8
s2 0 12
这篇文章中原始答案的一个问题是转换将整数转换为对象。这发生在转置之后,因为现在同一列存储整数以及文本索引。
相反,您可以像这样回避这个问题:
out = df.reset_index(drop=True).T.drop_duplicates().T.set_index(df.index)
out
var0 var2
s1 0 2
s2 0 4
s1 0 8
s2 0 12
或者,如果您的实际示例完全不同以至于您不能使用上面的示例,则总是有强制转换,即
out.astype(int)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句