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

时间:2014-06-16 14:51:14

标签: 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)

2 个答案:

答案 0 :(得分:3)

您需要使用str.count方法:

df['count'] = df[0].apply(lambda x: x.count(':'))

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

答案 1 :(得分:2)

这里使用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