我想使用大熊猫数据框计算字符串中最长连续的连续“ 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
答案 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)))