如何使用Pandas DataFrame计算字符串中最长连续的连续'0'和数字'1'

时间:2019-07-10 07:16:15

标签: python pandas dataframe

我想使用大熊猫数据框计算字符串中最长连续的连续“ 0”,其两侧是数字“ 1”

这是我的数据集

Id     label
1          1
2         11
3        101
4      10101
5       1001

这是我的预期输出

Id     label   result
1          1        0
2         11        0
3        101        1
4      10101        1
5       1001        2

2 个答案:

答案 0 :(得分:5)

您可以尝试将字符串相关的操作与split和count一起使用

将列转换为字符串->,然后用'1'分割并计算最大值

df['result'] = df.label.astype(str).str.split('1').apply(lambda x: len(max(x)))

出局:

   Id      label  result
0   1   1         0
1   2   11        0
2   3   101       1
3   4   10101     1
4   5   1001      2

答案 1 :(得分:3)

分割后获得列表长度的最大值并获得长度:

df['result'] = df['label'].astype(str).str.split('1').apply(lambda x: len(max(x, key=len)))
print (df)
   Id  label  result
0   1      1       0
1   2     11       0
2   3    101       1
3   4  10101       1
4   5   1001       2

另一种解决方案:

df['result'] = df['label'].apply(lambda x: len(max(str(x).split('1'), key=str)))