Pandas函数仅适用于单个列,而不是整个 Dataframe [duplicate]

b5lpy0ml  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(111)
    • 此问题在此处已有答案**:

Difference between map, applymap and apply methods in Pandas(11个答案)
4天前关闭。
我有一个如下所示的 Dataframe (给出了示例数据):

df = pd.DataFrame({'smiles': ['CCCCC', 'CCCC1', 'CCCN1'],
                        'ID' : ['A-111', 'A112', 'A-113'],
              'Parameter_1':[30.0, 31.4, 15.9],
              'Parameter_2':[NaN, '0.644', '4.38E-02'],
              'Date': [dt.date(2021, 1, 1), dt.date(2021, 1, 2), dt.date(2021, 1, 3)]})

我有以下功能:

def num_parse(element):
    try:
        float(element)
        return float(element)
    except ValueError:
        return(element)
    except TypeError:
        return(element)

当我将我的函数应用于单个列时,它工作得很好--将任何可以浮动的字符串转换为float,并保持所有其他字符串不变,同时也保持datetime列不变。

df['Parameter_1'] = df['Parameter_1'].apply(num_parse)

当我将其应用于整个 Dataframe 时,我不断收到以下错误:

df = df.apply(num_parse)

TypeError:无法将序列转换为
我不知道为什么,请帮助。

mhd8tkvw

mhd8tkvw1#

使用applymap()

df.applymap(num_parse)

您也可以:

df.apply(num_parse, axis=1)

相关问题