在pandas DataFrame上使用split()函数

7
我有以下数据框:

enter image description here

我想要去掉百分号。为了做到这一点,我决定对民主党和共和党这两列应用一个函数,并尝试按百分号进行拆分。以下代码试图实现这一点:
gallup_2012[['Democrat/Lean Democratic', 'Republican/Lean 
Republican']].apply(lambda x: x.split('%')[0])

然而,当我尝试这样做时,出现了以下错误:
("'Series' object has no attribute 'split'", u'occurred at index Democrat/Lean > Democratic')
我不太确定为什么会出现这个错误,因为我可以对该系列应用其他函数。只是 split() 函数不起作用。
如有帮助,将不胜感激!
2个回答

16

df[[ ]]返回一个数据帧,因此如果使用df.apply(),则它将应用于pd.Series。而Series没有split()方法,但是如果使用df[ ]并使用df.apply(),则您将能够实现您想要的功能。缺点仅在于您只能应用于一列。

gallup_2012['Democrat/Lean Democratic'].apply(lambda x: x.split('%')[0])

为什么当我执行像apply(lambda x: x+'s')这样的操作时,即使我将其应用于数据框,它仍然适用于每个单独的元素? - bugsyb
1
请查看以下代码的输出:df.apply(lambda x : type(x))df['column'].apply(lambda x : type(x)) - ksai

2
您可以在所需的列上使用 str.replace 方法进行操作。
df["column"] = df["column"].str.replace("%", "")

是的,我可以这样做,不过我很好奇为什么另一种方法不起作用。 - bugsyb
这在 pandas 0.25 中不起作用 AttributeError: 只能使用 .str 访问器处理字符串值! - Hrvoje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接