Python 如何计算最长的连续';0';两侧为数字';1';在字符串中使用数据帧

Python 如何计算最长的连续';0';两侧为数字';1';在字符串中使用数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我想使用pandas dataframe计算is字符串中最长的连续“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

我想使用pandas dataframe计算is字符串中最长的连续“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

您可以尝试将与字符串相关的操作用于拆分和计数

将列转换为字符串->然后用“1”拆分并计算最大值

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


拆分后获取列表长度的最大值并获取长度:

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)))

两边?所以这会算作2个零
10001
?@yatu它算作3个好的。。。但中间0的两侧没有1@yatu为什么?我问的是连续最长的
0
,旁边是数字
1
10001
是有3个
0
,旁边是
1
好的,明白了@nabihiuc应该检查两边是否都有0吗?是的@yatu,似乎在这种情况下也能工作len(max('0001011100'。split('1'):)
df['result'] = df['label'].apply(lambda x: len(max(str(x).split('1'), key=str)))