将数据帧转换为列表时,如何防止整数转换为浮点数?

时间:2019-09-27 21:29:53

标签: python pandas list csv integer

在将数据帧转换为列表时,如何防止将整数转换为浮点数?

我有一个包含5列数据的.csv文件。前四列没有小数点,而最后一列有小数点。

当我使用“ pd.read_csv”将数据导入脚本时,数据将正确导入,其中前4个数字为整数,最后一个为浮点数,如下所示:

1,1,10,0,1.0

1,1,11,0,0.6

1,1,12,0,0.0

但是我需要将此数据转换为列表,然后将所有数字转换为浮点数。我不想这样。前四个值必须是整数。

这是我当前的代码,在将其转换为列表后,提供了一个列表,其中所有数字都是浮动的:

data_file_name = r'C:\Users\username\Desktop\FileName.csv'

data = pd.read_csv(data_file_name)  #<This part works and the data types are correct, the first 4 are integers
data2 = data.values.tolist() #<here is where everything gets converted to a float, even if it was defined as an int in the df.

这将导致列表的数据格式如下:

[[1.0, 1.0, 10.0, 0.0, 1.0], [1.0, 1.0, 11.0, 0.0, 0.6], [1.0, 1.0, 12.0, 0.0, 0.0]]

当我需要像这样格式化时:

[[1, 1, 10, 0, 1.0], [1, 1, 11, 0, 0.6], [1, 1, 12, 0, 0.0]]

我该怎么办?

我尝试过:

[int(i,10) for i in data]

但这会返回此错误:

ValueError: invalid literal for int() with base 10: 'Month'

1 个答案:

答案 0 :(得分:1)

使用first_cols = ['var30', 'var40', 'var20'] df = df.reindex(first_cols + [col for col in df.columns if col not in first_cols], axis = 'columns') 参数控制数据类型。

dtype
相关问题