我有一个.csv
文件,其顶行和第一列包含字符串,其余数据为浮点数。我想把它读成一个数据帧,第一行和第一列分别作为列名和索引,所有浮动值都是float64
。
如果我使用df = pd.read_csv(filename,index_col=0)
,则所有数值都保留为字符串。
如果我使用df = pd.read_csv(filename, index_col=0, dtype=np.float64)
,我会收到异常:ValueError: could not convert string to float
,因为它会尝试将第一列解析为float
。
有大量列,我没有列名,因此我不想将每个列标识为float
;我想解析每个列,除了第一列。
答案 0 :(得分:1)
获取所有列名称的列表,删除第一个列名称。投下其他栏目。
cols = df.columns
cols.remove('fistcolumn')
for col in cols:
df[col] = df[col].astype(float)
答案 1 :(得分:0)
原始代码是正确的
df = pd.read_csv(filename,index_col=0)
但.csv
文件构造错误。
正如@ juanpa.arrivillaga指出的那样,只要列中的所有数据都是相同的dtypes
,pandas就会推断dtype
没有任何参数。这些列被解释为字符串,因为虽然大多数数据是数字的,但是一行包含非数字数据(实际上是日期)。从.csv
中删除此行解决了问题。