在将数据帧转换为列表时,如何防止将整数转换为浮点数?
我有一个包含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'
答案 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