自定义功能不适用于剥离文本

时间:2019-02-04 14:13:53

标签: python pandas

我需要清理一个熊猫数据框,其中有几列需要删除或剥离一些数据。为了编写更简洁的代码,我正在尝试创建一个函数,该功能可以进行一些清洗,并仅包含我需要的剥离信息返回一个新列。

从下面的代码中可以看出,我试图以不同的方式重写代码(也使用lambda函数),但是不幸的是我没有发现任何财富。我总是收到错误'str' object has no attribute 'str'

import pandas as pd

def cleaner(x):
    x = str(x)
    x = x.str.split('/').str[1]
    return x

data = ["First/A", "Second/B", "Third/C"]

dataframe = pd.DataFrame(data)

dataframe.columns = ["Source"]

dataframe["Destination"] = dataframe["Source"].apply(cleaner)

我期望的是获得一个仅包含“ A”,“ B”,“ C”值的新列(目标)。

2 个答案:

答案 0 :(得分:2)

由于变量.str是字符串对象,因此无需为变量x指定def cleaner(x): x = str(x) #x = x.str.split('/').str[1] x = x.split('/')[1] return x dataframe["Destination"] = dataframe["Source"].apply(cleaner)

dataframe["Destination"] = dataframe["Source"].str.split('/').str[1]

此外,可以很容易地将其减少为

{{1}}

答案 1 :(得分:0)

尝试一下:

import pandas as pd

def cleaner(x):
    x = x.split('/')[1]
    return x

data = ["First/A", "Second/B", "Third/C"]

dataframe = pd.DataFrame(data)

dataframe.columns = ["Source"]

dataframe["Destination"] = dataframe.apply(lambda x: cleaner(x['Source']), axis=1)