【问题标题】:pandas string noise string canceling熊猫弦噪声消除
【发布时间】:2018-10-20 15:24:42
【问题描述】:

假设我有一份饮料清单:

drinks=['coke','water','milk','yoghourt']

我有一个熊猫系列,其中包含一些与其他嘈杂字符串混合的项目

s = pd.Series(['cokeabc',Nan,Nan,'water coke',Nan,'milk and yoghourt','only water'])

我的目的是先过滤掉噪声,根据其他列补缺失值,然后get_dummies的s列 我的尝试是:

buff=[]
for i in material:
    if df['drink'].str.contains(i):
        buff.append(i)
kvkl['drink']=' '.join(buff)

但是 df['drink'].str.contains(i) 返回整列 bools

我应该试试 apply() 吗?

【问题讨论】:

  • 你可以单独创建每一列pd.DataFrame({drink: s.str.contains(drink) * 1 for drink in drinks})
  • @TedPetrou 谢谢,这很优雅。但是我需要先用groupby填充缺失值,所以我想我还是需要先清理's'列?
  • 您想要的确切输出是什么?你能编辑你的问题把它放进去吗?

标签: python string python-3.x pandas


【解决方案1】:

您只需在代码末尾添加.any() 即可轻松使您的代码工作:

buff=[]
for i in material:
    if df['drink'].str.contains(i).any():
        buff.append(i)
kvkl['drink']=' '.join(buff)

这将检查是否有任何单元格得到True 并提供预期的结果。

【讨论】:

    【解决方案2】:

    好的,我知道了

    def drink_format(mtr):
        drinks=['coke','water','milk','yoghourt']
        buff=[]
        for i in drinks:
            if i in mtr:
                buff.append(i)
    
        return ' '.join(buff)
    
    s=s.map(drink_format)
    

    【讨论】:

      猜你喜欢
      • 2016-06-13
      • 2017-04-14
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多