例如,csv文件如下所示,(1,2,3)是标题!
1,2,3
0,0,0
我使用pd.read_csv读取csv文件并打印
import pandas as pd
df = pd.read_csv('./test.csv')
print(df[1])
发生错误key error:1
似乎read_csv
将标头解析为字符串..
有没有办法在dataframe列中使用整数类型?
答案 0 :(得分:5)
我认为更为通用的是astype
:
integer
df = pd.read_csv('./test.csv')
df.columns = df.columns.astype(int)
另一种方法是首先只获取第一列并在read_csv
中使用参数names
:
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')
答案 1 :(得分:2)
使用EditorFor
和skiprows=1
跳过标题列。这将自动加载一个数据框,其中整数标头从header=None
开始。
0
df = pd.read_csv('test.csv', skiprows=1, header=None).rename(columns=lambda x: x + 1)
df
1 2 3
0 0 0 0
来电是可选的,但如果您希望标题从rename
开始,则可以将其保留。
如果您有1
,请使用MultiIndex
将0 th 级别设置为整数:
set_levels
答案 2 :(得分:2)
您可以将set_axis
与lambda
和pd.Index.map
考虑一个看起来像的csv:
1,1,2,2
a,b,a,b
1,3,5,7
0,2,4,6
阅读它:
df = pd.read_csv('test.csv', header=[0, 1])
df
1 2
a b a b
0 1 3 5 7
1 0 2 4 6
您可以使用第一级中的整数来管道列设置,如:
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
答案 3 :(得分:0)
在dataframe列中可以使用整数类型吗?
我觉得这很优雅:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="2.5"
android:shape="ring"
android:thickness="2dp"
android:useLevel="true">
<solid android:color="#ff205C" />
</shape>
请注意,df = pd.read_csv('test.csv').rename(columns=int)
是内置的函数 int()
。