python-3.x - Python:通过索引多列将 int64 更改为 float64
问题描述
虽然我发现了很多关于按名称更改单个列或几列的数据类型的事情,但我很难找到有关更改许多列而不键入所有特定名称的任何内容。
我想将所有 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)
推荐阅读
- node.js - 哪种方法可以立即将经过数学处理的数据从服务器分区传输到任何前端?
- android - 如何以编程方式打开我的应用程序的免打扰权限屏幕?
- c# - C# 不可为空的字段:Lateinit?
- javascript - 启用/禁用按钮问题
- python - Python代码问题。我用python做了一个简单的彩票系统。如何在每次重置为 1000 时停止变量 b?
- php - 如何使用 PHP 更改 CSS 中的颜色?
- javascript - React.js 将元素附加到现有的 svg
- django - 尽管设置良好,但 Django ModelChoiceField 初始值不起作用
- linux - 如何在shell中创建一个切换功能,在一个呼叫上打开,在另一个呼叫上关闭?
- vue.js - npm 错误!纤维@4.0.2 安装:`node build.js || 在 Nuxt 中安装 Vuetify 时的 nodejs build.js`