Конвертировать str в float в Dataframe или Array - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть пандасный фрейм данных (можно преобразовать его в массив numpy, если он лучше), например:

X_train

И я хотел бы преобразовать каждое значение из строк в числовое

Я пытался использовать такие вещи, как convert objects, но это не работает вообще. Я думаю, что проблема в квадратных скобках, поэтому функция сработает, если я смогу от них избавиться.

Привет и спасибо заранее

Edit:

Вот откуда берутся данные

X_ans=[]
Y_ans=[]
for i in range (len(data["Births"])-2):
    X=list(data["Births"])[i:i+3]
    Y=list(data["Births"])[i+1]
    X_ans.append(X)
    Y_ans.append(Y)
    in_=pd.DataFrame([ str(x) for x in X_ans ],columns=['input'])
    out=pd.DataFrame([ str(x) for x in Y_ans ],columns=['output'])
ans_1=pd.concat([in_,out],axis=1)

ans_1 будет так:

enter image description here

Теперь я разделил это:

msk = np.random.rand(len(ans_1)) < 0.8
traindf = ans_1[msk]
evaldf = ans_1[~msk]

И разделить значения, разделенные запятыми, чтобы получить размеры

    X_train = traindf.iloc[:, 0]
    Y_train = traindf.iloc[:, 1]
    X_test = evaldf.iloc[:, 0]
    Y_test = evaldf.iloc[:, 1]
    X_train = X_train.str.split(pat = ',', expand = True)
    X_train = X_train.values
    X_test = X_test.str.split(pat = ',', expand = True)
    X_test = X_test.values

PS: я могу использовать значения:

enter image description here

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018
import pandas as pd
df=pd.DataFrame({0:['[3242','232','243214]'],1:['[3242','232','243214]']})

ДФ:

        0        1
0    [3242    [3242
1      232      232
2  243214]  243214]

Если вы хотите обобщить логику для удаления всех нечисловых символов,

df.replace(regex=r'\D',value='',inplace=True)
df=df.apply(pd.to_numeric)

Выход:

        0       1
0    3242    3242
1     232     232
2  243214  243214
0 голосов
/ 13 ноября 2018

Использовать replace:

df = df.replace(r'\[|\]','',regex=True).astype(float)

для использования массива:

arr = df.values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...