'dataframe'对象没有属性'str'问题

编程入门 行业动态 更新时间:2024-10-24 20:14:54
本文介绍了'dataframe'对象没有属性'str'问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试删除包含某些字符串的行.但是,我得到了错误:

I am trying to delete rows that contain certain strings. However, I am getting the error:

pandas-'dataframe'对象没有属性'str'错误.

pandas - 'dataframe' object has no attribute 'str' error.

这是我的代码:

df = df[~df['colB'].str.contains('Example:')]

我该如何解决?

推荐答案

第一个问题应该是重复的列名称,因此在选择colB之后,获取的不是Series,而是DataFrame:

First problem shoud be duplicated columns names, so after select colB get not Series, but DataFrame:

df = pd.DataFrame([['Example: s', 'as', 2], ['dd', 'aaa', 3]], columns=['colB','colB','colC']) print (df) colB colB colC 0 Example: s as 2 1 dd aaa 3 print (df['colB']) colB colB 0 Example: s as 1 dd aaa #print (df['colB'].str.contains('Example:')) #>AttributeError: 'DataFrame' object has no attribute 'str'

解决方案应将列连接在一起:

Solution should be join columns together:

print (df['colB'].apply(' '.join, axis=1)) 0 Example: s as 1 dd aaa df['colB'] = df.pop('colB').apply(' '.join, axis=1) df = df[~df['colB'].str.contains('Example:')] print (df) colC colB 1 3 dd aaa

第二个问题应该是hidden MultiIndex:

Second problem should be hidden MultiIndex:

df = pd.DataFrame([['Example: s', 'as', 2], ['dd', 'aaa', 3]], columns=['colA','colB','colC']) df.columns = pd.MultiIndex.from_arrays([df.columns]) print (df) colA colB colC 0 Example: s as 2 1 dd aaa 3 print (df['colB']) colB 0 as 1 aaa #print (df['colB'].str.contains('Example:')) #>AttributeError: 'DataFrame' object has no attribute 'str'

解决方案已重新分配至第一级:

Solution is reassign first level:

df.columns = df.columns.get_level_values(0) df = df[~df['colB'].str.contains('Example:')] print (df) colA colB colC 0 Example: s as 2 1 dd aaa 3

第三个应该是MultiIndex:

df = pd.DataFrame([['Example: s', 'as', 2], ['dd', 'aaa', 3]], columns=['colA','colB','colC']) df.columns = pd.MultiIndex.from_product([df.columns, ['a']]) print (df) colA colB colC a a a 0 Example: s as 2 1 dd aaa 3 print (df['colB']) a 0 as 1 aaa print (df.columns) MultiIndex(levels=[['colA', 'colB', 'colC'], ['a']], codes=[[0, 1, 2], [0, 0, 0]]) #print (df['colB'].str.contains('Example:')) #>AttributeError: 'DataFrame' object has no attribute 'str'

解决方案是通过tuple选择MultiIndex:

df1 = df[~df[('colB', 'a')].str.contains('Example:')] print (df1) colA colB colC a a a 0 Example: s as 2 1 dd aaa 3

或重新分配:

df.columns = df.columns.get_level_values(0) df2 = df[~df['colB'].str.contains('Example:')] print (df2) colA colB colC 0 Example: s as 2 1 dd aaa 3

或删除第二级:

df.columns = df.columns.droplevel(1) df2 = df[~df['colB'].str.contains('Example:')] print (df2) colA colB colC 0 Example: s as 2 1 dd aaa 3

更多推荐

'dataframe'对象没有属性'str'问题

本文发布于:2023-10-16 16:49:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1498160.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性   对象   dataframe   str

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!