pandas将_csv parse header读取为字符串类型,但我想要integ

2024-05-23 21:14:08 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,csv文件如下,(1,2,3)是头文件!在

1,2,3
0,0,0

我读csv文件使用pd.read_csv文件和印刷品

^{pr2}$

发生错误key error:1

似乎read_csv将头解析为字符串。。在

有没有办法在dataframe列中使用integer类型?在


Tags: 文件csvkey字符串dataframeread头文件错误
3条回答

您可以将set_axislambda和{}结合使用

假设csv看起来像:

1,1,2,2
a,b,a,b
1,3,5,7
0,2,4,6

读起来像:

^{pr2}$

您可以在第一级使用整数对列设置进行管道化,例如:

df.set_axis(df.columns.map(lambda i: (int(i[0]), i[1])), axis=1, inplace=False)

   1     2   
   a  b  a  b
0  1  3  5  7
1  0  2  4  6

我认为更一般的情况是由^{}将列名转换为integer

df = pd.read_csv('./test.csv')
df.columns = df.columns.astype(int)

另一种方法是首先只获取第一列并在^{}中使用参数names

^{pr2}$

使用skiprows=1header=None跳过标题列。这将自动加载从0开始的具有整数报头的数据帧。在

df = pd.read_csv('test.csv', skiprows=1, header=None).rename(columns=lambda x: x + 1)

^{pr2}$

rename调用是可选的,但是如果您希望您的头从1开始,可以保留它。在


如果您有一个MultiIndex,请使用set_levels将0th级别设置为整数:

df.columns = df.columns.set_levels(
     df.columns.get_level_values(0).astype(int), level=0
)

相关问题 更多 >