熊猫read_csv将标头解析为字符串类型,但我想要整数

이승훈*_*이승훈 3 python pandas

例如,csv文件如下,(1,2,3)是标题!

1,2,3
0,0,0
Run Code Online (Sandbox Code Playgroud)

我使用pd.read_csv读取csv文件并打印

import pandas as pd
df = pd.read_csv('./test.csv')
print(df[1])
Run Code Online (Sandbox Code Playgroud)

发生错误 key error:1

似乎该read_csv解析标头为字符串。

有什么办法在数据框列中使用整数类型?

jez*_*ael 5

我认为将更通用的名称强制转换为integerby astype

df = pd.read_csv('./test.csv')
df.columns = df.columns.astype(int)
Run Code Online (Sandbox Code Playgroud)

另一种方式是先只得到第一列和使用参数namesread_csv

import csv
with open("file.csv", "r") as f:
    reader = csv.reader(f)
    i = np.array(next(reader)).astype(int)

#another way
#i = pd.read_csv("file.csv", nrows=0).columns.astype(int)
print (i)
[1 2 3]

df = pd.read_csv("file.csv", names=i, skiprows=1)
print (df.columns)
Int64Index([1, 2, 3], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

  • @이승훈不,我认为一个更好的选择是使用`df.columns.set_levels`。 (2认同)