将str转换为Dataframe或Array中的float

时间:2018-11-13 10:58:46

标签: python pandas dataframe

我有一个pandas数据框(如果更好,可以将其转换为numpy数组):

X_train

我想将每个值从字符串转换为数字

我曾经尝试使用convert objects之类的东西,但是根本不起作用。我认为问题出在方括号中,因此如果我可以摆脱它们,该功能将起作用。

致以问候并预先致谢

编辑:

这里是数据的来源

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 :(得分:2)

使用replace

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

供阵列使用:

arr = df.values

答案 1 :(得分:0)

offset

df:

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)