为什么两个相似的函数在Python中以不同的方式工作?

为什么两个相似的函数在Python中以不同的方式工作?,python,pandas,Python,Pandas,我需要用“:”符号分隔字符串,然后选择此分隔字符串的左侧。 这些函数运行良好,我得到了正确的输出 df['title'].apply(lambda x: x.split(':')[0]) df['title'].str.split(':').str[0] 为什么这段代码会出现错误 df['title'].split(':')[0] AttributeError: 'Series' object has no attribute 'split' 您正在尝试拆分数据框的整个标题列(即错误消息中提

我需要用“:”符号分隔字符串,然后选择此分隔字符串的左侧。 这些函数运行良好,我得到了正确的输出

df['title'].apply(lambda x: x.split(':')[0])
df['title'].str.split(':').str[0]
为什么这段代码会出现错误

df['title'].split(':')[0]
AttributeError: 'Series' object has no attribute 'split'

您正在尝试拆分数据框的整个标题列(即错误消息中提到的系列)。您要做的是对数据帧的每一行应用一个函数,您可以通过在数据帧上调用apply来实现,就像您在第一个代码块中所做的那样。

当您使用df[“column”]时,您会得到一个值,并且split()属性不适用于该类型的对象。使用时,您实际上是在访问该系列的值,python将它们标识为字符串,因此您可以在这些对象上预执行字符串函数。

您能澄清您的问题吗?它给出了一个错误,因为
系列
对象没有属性
拆分
。你凭什么认为它们是这样的?它们没有那么相似。第一种方法对序列中的每个值应用
split
;第二个尝试拆分系列本身。这与
1+some_list
[x+1代表some_list中的x]
之间的区别是一样的。我不明白你想要什么。你是在要求我们解决你自己已经解决的问题吗?