我需要清理一个熊猫数据框,其中有几列需要删除或剥离一些数据。为了编写更简洁的代码,我正在尝试创建一个函数,该功能可以进行一些清洗,并仅包含我需要的剥离信息返回一个新列。
从下面的代码中可以看出,我试图以不同的方式重写代码(也使用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”值的新列(目标)。
答案 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)