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