dataframe应用str.contains+将多列连接成一列

dataframe应用str.contains+将多列连接成一列

  • python - 'dataframe' 对象没有属性 'str' 问题
    • 最佳答案
    • 解决方案应该是将列连接在一起:
  • Python基础-TypeError:takes 2 positional arguments but 3 were given
  • python .loc ValueError: Boolean array expected for the condition, not object

python - ‘dataframe’ 对象没有属性 ‘str’ 问题

参考链接:https://www.coder.work/article/3136827

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

pandas - ‘dataframe’ object has no attribute ‘str’ error.

我怎样才能解决这个问题?

最佳答案

第一个问题应该是重复的列名,所以在选择 colB 之后不要Series , 但是 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'

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

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

sad,我又报错了

Python基础-TypeError:takes 2 positional arguments but 3 were given

因此我需要换种方法将多列合并成一列
参考链接:https://blog.csdn.net/weixin_42782150/article/details/103668814

df['ColumnA'] = df[df.columns[1:]].apply(
    lambda x: ','.join(x.dropna()),
    axis=1)   # ”1:“表示合并第一列之后的各列为一列

我的代码:

df['ColumnA'] = df[df.loc[:,['A','B','C']]].apply(
    lambda x: ','.join(x.dropna()),axis=1)   # ”1:“表示合并第一列之后的各列为一列

再次报错:

python .loc ValueError: Boolean array expected for the condition, not object

dataframe应用str.contains+将多列连接成一列_第1张图片

最后将我的代码改为

df1 = df[['A','B','C']]
df1['ColumnA'] = df1[df1.columns[1:]].apply(
    lambda x: ','.join(x.dropna()),axis=1)   # ”1:“表示合并第一列之后的各列为一列

噢终于解决了,ending

你可能感兴趣的:(实践,pandas,python,开发语言)