Home > Net >  Creating a List and maintaining integer value
Creating a List and maintaining integer value

Time:11-17

I am new to python a bit.

I am trying to convert a dataframe to list after changing the datatype of a particular column to integer. The funny thing is when converted to list, the column still has float.

There are three columns in the dataframe, first two is float and I want the last to be integer, but it still comes as float.

If I change all to integer, then the list creates as integer.

0   1.53    3.13    0.0
1   0.58    2.83    0.0
2   0.28    2.69    0.0 
3   1.14    2.14    0.0
4   1.46    3.39    0.0
... ... ... ...

495 2.37 0.93 1.0 496 2.85 0.52 1.0 497 2.35 0.39 1.0 498 2.96 1.68 1.0 499 2.56 0.16 1.0

Above is the Dataframe.

Below is the last column converted

#convert last column to integer datatype
data[6] = data[6].astype(dtype ='int64')
display(data.dtypes)

The below is converting the dataframe to list.

#Turn DF to list
data_to_List = data.values.tolist()
data_to_List

#below is what is shown now.

[[1.53, 3.13, 0.0],
[0.58, 2.83, 0.0],
[0.28, 2.69, 0.0],
[1.14, 2.14, 0.0],
[3.54, 0.75, 1.0],
[3.04, 0.15, 1.0],
[2.49, 0.15, 1.0],
[2.27, 0.39, 1.0],
[3.65, 1.5, 1.0],

I want the last column to be just 0 or 1 and not 0.0 or 1.0

CodePudding user response:

Yes, you are correct pandas is converting int to float when you use data.values

You can convert your float to int by using the below list comprehension:

data_to_List = [[x[0],x[1],int(x[2])] for x in data.values.tolist()]

print(data_to_List)

[[1.53, 3.13, 0],
 [0.58, 2.83, 0],
 [0.28, 2.69, 0],
 [1.14, 2.14, 0],
 [1.46, 3.39, 0]]
  • Related