为什么dataframe没有str属性,而series有str方法?

为什么dataframe没有str属性,而series有str方法?

a=pd.DataFrame([['A|B','C|D']])
type(a.str) #错误AttributeError: 'DataFrame' object has no attribute 'str'
type(a[0].str) #<class 'pandas.core.strings.StringMethods'>
a[0].str#<pandas.core.strings.StringMethods object at 0x0000000024FCAB00>

问题:
1、a[0].str返回的是一个方法么?pandas.core.strings.StringMethods。为什么这个方法不用加括号?
2、为什么dataframe对象没有str,而series就有了?这是处于什么考虑的?


回答:

1,Series.str是一个StringMethods实例,它不是函数
2,Series.str中封装了很多python str的方法,可以方便的对Series中的字符串元素进行操作。从这个角度看它就是一个map。所以如果想在dataframe上实现类似的效果,可以用applymap。

但Series.str又不只是一个map,它还可以进行列表操作,比如Series.str.cat可以把多个series合成一个。从这个角度看它又像dataframe的apply。

3,dataframe已经有了apply和applymap,那么Series.str从实际使用出发定义成了apply/map多义性的,基本上能覆盖绝大部分要求了。

我是这样理解的,可能还有别的考虑是我没有想到的。

至于dataframe有没有必要加Series.str,我认为场景需求有限,并不是特别必要。series已经有了map/apply对元素操作,dataframe有了apply/applysum分别对series和元素操作。如果给dataframe加上Series.str,需要它去做的似乎只有对多个形状相同的dataframe进行字符串操作了,除了groupby想不出有什么场景可以用到这个功能。

以上是 为什么dataframe没有str属性,而series有str方法? 的全部内容, 来源链接: utcz.com/p/937961.html

回到顶部