在pandas df中的行上应用函数

时间:2017-11-17 14:06:10

标签: python function pandas

在pandas df中,我有一个列$.each(oldData, function(i, e) { console.log(oldData[e], $scope.form[e]); oldData[e] = ''; console.log(oldData[e], $scope.form[e]); }); ,其中包含各种操作系统分类,例如['name']等。这是字符串。

我希望使用此函数来创建一个更通用的新列'Windows 7', 'Windows 10', 'Linux', 'Mobile iOS 9.1', 'OS X 10.12'

['type']

当我通过传入单个字符串变量测试函数时,它正常工作,但由于某种原因,当我将函数应用于这样的df时,它只返回"其他"对于每一行。

def name_group(row):
    if 'Windows' in row:
        name = 'Microsoft Windows'
    elif 'iOS' in row:
        name = 'Apple iOS'
    elif 'OS X' in row:
        name ='Apple Macintosh'
    elif 'Macintosh' in row:
        name = 'Apple Macintosh'
    elif 'Linux' in row:
        name = 'GNU/Linux'
    else:
        name = 'Other'
    return name

有关可能导致此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您需要使用Series.apply传递列name

new_df['type'] = new_df['name'].apply(name_group)

但是如果想要使用DataFrame.apply,则需要lambda函数并传递列名:

new_df['type'] = new_df.apply(lambda x: name_group(x['name']), axis=1)