我无法将自定义函数应用到dataframe
:
df = pd.DataFrame({
"a": ["related-1", "related-0", "related-1"],
"b": ["request-1", "request-0", "request-1"],
"c": ["offer-1", "offer-0", "offer-1"],
})
def clean_column(df, column):
return df[column].apply(lambda x: re.sub(".*-", "", x)).astype("int64")
clean_column(df, "a") # This works
我想将此函数应用于多个列:
df.applymap(lambda x: clean_column(df, x))
Error: KeyError: 'related-1'
现在确定我在这里做错了什么,有人可以告诉我这不起作用的原因吗?
apply
将整个列作为输入,而不仅仅是名称。所以你要:
def clean_column(column):
return column.apply(lambda x: re.sub(".*-", "", x)).astype("int64")
df.apply(clean_column)
但是,就您而言,您确实apply
对每一列再次进行。换句话说,您想要将函数应用于所有单元格。那是applymap
:
df.applymap(lambda x: re.sub(".*-", "", x)).astype("int64")
Output:
a b c
0 1 1 1
1 0 0 0
2 1 1 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)