pra*_*ner 3 python numpy pandas
我有一个21840x39数据框。我的一些列是有数值的,我想确保它们都在相同的位置data type(我希望是一个float)。
而不是命名所有列并转换它们:
df[['A', 'B', 'C', '...]] = df[['A', 'B', 'C', '...]].astype(float)
Run Code Online (Sandbox Code Playgroud)
我可以做一个for loop允许我说“从第 18 列转换为浮点到第 35 列”之类的话吗
我知道如何做一栏:df['A'] = df['A'].astype(float)
但我怎样才能做多列呢?我尝试在循环内进行列表切片,但无法正确执行。
第一个想法是转换选定的列,python 从 开始计数0,因此对于18 to 36列使用:
df.iloc[:, 17:35] = df.iloc[:, 17:35].astype(float)
Run Code Online (Sandbox Code Playgroud)
如果不起作用(因为可能存在错误),请使用另一种解决方案:
df = df.astype(dict.fromkeys(df.columns[17:35], float))
Run Code Online (Sandbox Code Playgroud)
示例- 将第 8 列转换为第 15 列:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(10, size=(3, 18)),
columns=list('abcdefghijklmnopqr')).astype(str)
print (df)
a b c d e f g h i j k l m n o p q r
0 0 8 3 6 3 3 7 8 0 0 8 9 3 7 2 3 6 5
1 0 4 8 6 4 1 1 5 9 5 6 6 6 5 4 6 4 2
2 3 4 7 1 4 9 3 2 0 9 1 2 7 1 0 2 8 8
df = df.astype(dict.fromkeys(df.columns[7:15], float))
print (df)
a b c d e f g h i j k l m n o p q r
0 0 8 3 6 3 3 7 8.0 0.0 0.0 8.0 9.0 3.0 7.0 2.0 3 6 5
1 0 4 8 6 4 1 1 5.0 9.0 5.0 6.0 6.0 6.0 5.0 4.0 6 4 2
2 3 4 7 1 4 9 3 2.0 0.0 9.0 1.0 2.0 7.0 1.0 0.0 2 8 8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |