使用清除数据帧pd.应用()

2024-09-28 01:32:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的数据框。我试图通过遍历行和列来清理这些行。我发现这需要很长时间。所以我想用pd.应用(),但在执行过程中遇到问题。你知道吗

这是一个永远的尝试:


def elim_com(x):
    try:
        x.replace(',',' ')
    except ValueError:
        return x

def to_number(x):
    try:
        x=float(x)
        return(x)
    except ValueError:
        return x

for row in range(df.shape[0]):
    for column in range(0,dfconvertendum.shape[1],1):
        try:
            dfconvertendum.iloc[row,column]=elim_com(dfconvertendum.iloc[row,column])
        except TypeError:
            continue
        except AttributeError:
            continue

for row in range(df.shape[0]):
    for column in range(0,df.shape[1],1):
        try:
            dfconvertendum.iloc[row,column]=to_number(dfconvertendum.iloc[row,column])    
        except TypeError:
            continue```

Here is my attempt using apply:

```## Clean using apply 

def elim_com(x):
    try:
        x.replace(',',' ')
    except ValueError:
        return x

def to_number(x):
    try:
        x=float(x)
        return(x)
    except ValueError:
        return x

dfconvertendum=dfconvertendum.apply(elim_com)
dfconvertendum=dfconvertendum.apply(to_num)

我们的目标是在当前有一个名为object的df数据类型的地方使用带有float的单个df。我也试过用数字来描述,但它会以不变的方式把事情搞砸。我想稍微洗一下。我想把不是简单的带逗号的数字,去掉逗号,转换成浮点数。 最好的!你知道吗


Tags: toincomdfforreturndefrange
2条回答

事实上,如果你不想表现得粗鲁一点,那么你的代码就是低效的。关于pandas的一个优点是,您可以执行向量化操作,速度非常快。假设您知道要将哪些列转换为float,以及要在哪些列中删除逗号,则可以执行以下操作:

for col in df.columns:
    df[col]=df[col].str.replace(',','').astype(float) 

编辑:根据您的反馈更改答案

我做到了。我的把戏是用np.NaN公司,然后做一个pd.应用. 这允许我根据需要对\ u值()进行排序。你知道吗

df=df.replace('N/A',np.NaN)

for col in df:
    try:
        df[col]=df[col].str.replace(',','').astype(float)
    except ValueError:
        continue
    except AttributeError:
        continue
    except KeyError:
        continue```

相关问题 更多 >

    热门问题