【问题标题】:Convert str to float in Dataframe or Array将 str 转换为数据框或数组中的浮点数
【发布时间】:2018-11-13 19:37:01
【问题描述】:

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

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

我尝试过使用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 会是这样的:

现在我拆分它:

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:我可以使用值:

【问题讨论】:

  • 你能给我们一行代码来实例化那个数据框吗?它比图片更容易处理。
  • 您从哪里获取数据?我建议尽早或至少在首先生成数据框之前摆脱这些括号......

标签: python pandas dataframe


【解决方案1】:

使用replace:

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

数组使用:

arr = df.values

【讨论】:

  • 我认为你需要'[|]'
  • @MohamedThasinah 在正则表达式中的特殊字符之前应该有 `\`。
  • @SandeepKadapa - 是的在我的评论中我放了单斜杠,但 SO 将其视为转义字符:-)
【解决方案2】:
import pandas as pd
df=pd.DataFrame({0:['[3242','232','243214]'],1:['[3242','232','243214]']})

df:

        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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    相关资源
    最近更新 更多