如何使用pandas根据行值条件更改列数据类型

2024-09-27 07:26:48 发布

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

我想根据行条件更改列值的数据类型,但不起作用

Sample Data:
    eName   Value1  Value2  NValue
    sample1 XYZ XYZ XYZ
    sample2 102 XYZ 102 XYZ 102 XYZ
    sample3 3   3.000   
    sample4 3   3.000   

我尝试过这种方法,是否有不同的方法我必须使用

data.loc[data.eName == 'sample3', ['Value1', 'Value2']].apply(pd.to_numeric)
data.loc[data.eName == 'sample4', ['Value1', 'Value2']].apply(pd.to_numeric)


Output as:
    eName   Value1  Value2  NValue
    sample1 XYZ     XYZ     XYZ
    sample2 102 XYZ 102 XYZ 102 XYZ
    sample3 3.00    3.00    
    sample4 3.00    3.00    

Tags: to方法datalocpdapplyvalue1xyz
1条回答
网友
1楼 · 发布于 2024-09-27 07:26:48

您可以将由^{}创建的掩码分配给已筛选数据帧的两侧,如有必要,添加errors='coerce'以将非数值转换为NaN

m = data.eName.isin(['sample3','sample4'])
cols = ['Value1', 'Value2']
#if need all columns without eName 
#cols = df.columns.difference(['eName'])
data.loc[m, cols] = data.loc[m , cols].apply(pd.to_numeric, errors='coerce')
print (data)
     eName   Value1   Value2   NValue
0  sample1      XYZ      XYZ      XYZ
1  sample2  102 XYZ  102 XYZ  102 XYZ
2  sample3        3        3      NaN
3  sample4        3        3      NaN

如果需要所有不带第一列的列:

m = data.eName.isin(['sample3','sample4']).values
data.iloc[m, 1:] = data.iloc[m , 1:].apply(pd.to_numeric, errors='coerce')

相关问题 更多 >

    热门问题