尽管我发现有很多关于更改单个列或按名称更改几列的数据类型的事情,但我很难找到有关更改许多列而无需键入所有特定名称的任何信息。
我想将所有int64更改为float64,而不必手动指定所有60列。我发现了这一点:
df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce')
但是,创建诸如以下内容的列表:column_list = list(df[6:])
甚至似乎都没有给出从第7列开始的列表。
使用DataFrame.iloc
,第一个:
表示选择所有行,第二个表示从第7列开始的所有列:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':['a',5,4,5,5,4],
'F':[7,'a',9,4,2,3],
'G':[1,3,5,7,1,0],
'H':[4,5,'a',5,5,4],
'I':[7,8,9,4,2,3],
'J':[1,3,5,'a',1,0],
'K':[5,'a',6,9,2,4]
})
print (df.dtypes)
A object
B int64
C int64
D int64
E object
F object
G int64
H object
I int64
J object
K object
dtype: object
df.iloc[:, 6:] = df.iloc[:, 6:].apply(pd.to_numeric, errors='coerce', downcast='float')
print (df.dtypes)
dtype: object
A object
B int64
C int64
D int64
E object
F object
G float64
H float64
I float64
J float64
K float64
dtype: object
如果所有值都是整数:
df.iloc[:, 6:] = df.iloc[:, 6:].astype(np.float64)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句