微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – pandas:计算向下行的字符串条件

我有一个看起来像这样的数据框:

  col_1
0  A
1  A:C:D
2  A:B:C:D:E
3  B:D

我想把每个’:’计算到:

  col_1        count
0  A             0
1  A:C:D         2
2  A:B:C:D:E     4
3  B:D           1

我试过应用一个函数无济于事:

def count_fx(df):
    return df.str.contains(':').sum()
df['count'] = df['col_1'].apply(count_fx)

也,

df['count'] = df['col_1'].apply(lambda x: (x.str.contains(':')).sum(), axis=1)

解决方法:

在这里使用apply()的方式导致每个元素被传入.即,DataFrame不是传入的.所以你只需要将你的函数改为

def count_fx(s):
    return s.count(':')

然后你可以使用你拥有的东西:

In [11]: df['count'] = df['col_1'].apply(count_fx)

In [12]: df
Out[12]:
       col_1  count
0          A      0
1      A:C:D      2
2  A:B:C:D:E      4
3        B:D      1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐