读取csv文件到pandas dataframe为float

时间:2017-07-11 06:54:07

标签: python csv pandas parsing

我有一个.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;我想解析每个列,除了第一列。

2 个答案:

答案 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中删除此行解决了问题。