pandas - конвертирует тип объекта в тип с плавающей точкой - PullRequest
0 голосов
/ 25 апреля 2018

Попытка преобразовать объект в тип с плавающей запятой для рабочей силы и материальных затрат.

тип данных:

Cntr No                         object
Amount in Estimate Currency    float64
Labour Cost                     object
Material Cost                   object
type                            object
dtype: object

выходные данные:

OddU 6167142    543.42  192 351.42  

ввод: Не повезлос кодом ниже

 #convert to float
 df_co.iloc[:,2:3].apply(lambda x : x.str.extract('(\d+)',expand=False).astype(float))
 df_co['Labour Cost'].astype(float)

1 Ответ

0 голосов
/ 25 апреля 2018

К сожалению, есть ошибка, поэтому после присвоения обратно float столбцы снова преобразуются в object:

Итак, возможное решение:

np.random.seed(2018)

np.random.seed(123)
df_co = pd.DataFrame(np.random.choice(['sa5', 's7s'], size=(5, 4)))
print(df_co)
     0    1    2    3
0  sa5  s7s  sa5  sa5
1  sa5  sa5  sa5  s7s
2  s7s  sa5  s7s  s7s
3  sa5  s7s  sa5  s7s
4  sa5  s7s  s7s  sa5

c = df_co.columns[2:3]
print (c)

#remove columns which need convert
df = df_co.drop(c, axis=1)
#convert columns
df1 = df_co[c].apply(lambda x : x.str.extract('(\d+)',expand=False)).astype(float)
#join together and last reindex for same ordering 
df_co = df.join(df1).reindex(columns=df_co.columns)
print(df_co)
     0    1    2    3
0  sa5  s7s  5.0  sa5
1  sa5  sa5  5.0  s7s
2  s7s  sa5  7.0  s7s
3  sa5  s7s  5.0  s7s
4  sa5  s7s  7.0  sa5

print(df_co.dtypes)
0     object
1     object
2    float64
3     object
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...